Node.js复制文件的方法示例


Posted in Javascript onDecember 29, 2016

本文实例讲述了Node.js复制文件的方法。分享给大家供大家参考,具体如下:

本人开发过程中,经常遇到,要去拷贝模板到当前文件夹,经常要去托文件,为了省事,解决这个问题,写了一个node复制文件。

// js/app.js:指定确切的文件名。
// js/*.js:某个目录所有后缀名为js的文件。
// js/**/*.js:某个目录及其所有子目录中的所有后缀名为js的文件。
// !js/app.js:除了js/app.js以外的所有文件。
// *.+(js|css):匹配项目根目录下,所有后缀名为js或css的文件。
//流 stream  管道 pipe 管道
//如果想在读取流和写入流的时候做完全的控制,可以使用数据事件。但对于单纯的文件复制来说读取流和写入流可以通过管道来传输数据。
var fs = require("fs");
var path = require("path");
/*
 * 复制目录中的所有文件包括子目录
 * @src param{ String } 需要复制的目录  例 images 或者 ./images/
 * @dst param{ String } 复制到指定的目录  例 images images/
 */
//获取当前目录绝对路径,这里resolve()不传入参数
var filePath = path.resolve();
var copy = function(src,dst){
  //判断文件需要时间,则必须同步
  if(fs.existsSync(src)){
    fs.readdir(src,function(err,files){
      if(err){console.log(err);return;}
      files.forEach(function(filename){
        //url+"/"+filename不能用/直接连接,Unix系统是”/“,Windows系统是”\“
        var url = path.join(src,filename),
          dest = path.join(dst,filename);
          console.log(url);
          console.log(dest);
        fs.stat(path.join(src,filename),function(err, stats){
          if (err) throw err;
           //是文件
          if(stats.isFile()){
            //创建读取流
            readable = fs.createReadStream(url);
            //创建写入流 
            writable = fs.createWriteStream(dest,{ encoding: "utf8" });
            // 通过管道来传输流
            readable.pipe(writable);
          //如果是目录
          }else if(stats.isDirectory()){
            exists( url, dest, copy );
          }
        });
      });
    });
  }else{
    console.log("给定的目录不存,读取不到文件");
    return;
  }
}
function exists(url,dest,callback){
  fs.exists(dest,function(exists){
    if(exists){
      callback && callback(url,dest);
    }else{
      //第二个参数目录权限 ,默认0777(读写权限)
      fs.mkdir(dest,0777,function(err){
        if (err) throw err;
        callback && callback(url,dest);
      });
    }
  });
}
exports.copy = copy;
//copy("./views/","./www/");
copy("./../jdcase/homeappliances/",filePath);

希望本文所述对大家nodejs程序设计有所帮助。

Javascript 相关文章推荐
js获取元素到文档区域document的(横向、纵向)坐标的两种方法
May 17 Javascript
Node.js环境下编写爬虫爬取维基百科内容的实例分享
Jun 12 Javascript
jQuery中Nicescroll滚动条插件的用法
Nov 10 Javascript
微信小程序 动态的设置图片的高度和宽度详解及实例代码
Feb 24 Javascript
json的结构与遍历方法实例分析
Apr 25 Javascript
Angular js 实现添加用户、修改密码、敏感字、下拉菜单的综合操作方法
Oct 24 Javascript
小程序实现自定义导航栏适配完美版
Apr 02 Javascript
利用原生JavaScript实现造日历轮子实例代码
May 08 Javascript
vue实现固定位置显示功能
May 30 Javascript
JavaScript中的连续赋值问题实例分析
Jul 12 Javascript
简介JavaScript错误处理机制
Aug 04 Javascript
JavaScript的Set数据结构详解
Feb 18 Javascript
详解微信小程序——自定义圆形进度条
Dec 29 #Javascript
JS作用域深度解析
Dec 29 #Javascript
javascript中的深复制详解及实例分析
Dec 29 #Javascript
canvas学习之API整理笔记(一)
Dec 29 #Javascript
Javascript Function.prototype.bind详细分析
Dec 29 #Javascript
jQuery自定义插件详解及实例代码
Dec 29 #Javascript
canvas快速绘制圆形、三角形、矩形、多边形方法介绍
Dec 29 #Javascript
You might like
数据库相关问题
2006/10/09 PHP
PHP nl2br函数 将换行字符转成 <br>
2009/08/21 PHP
Thinkphp 框架扩展之应用模式实现方法分析
2020/04/27 PHP
thinkphp 框架数据库切换实现方法分析
2020/05/18 PHP
javascript 基础篇4 window对象,DOM
2012/03/14 Javascript
浏览器窗口加载和大小改变事件示例
2014/02/27 Javascript
解决jquery版本冲突的有效方法
2014/09/02 Javascript
JavaScript检测并限制复选框选中个数的方法
2015/08/12 Javascript
jQuery实现判断控件是否显示的方法
2017/01/11 Javascript
Bootstrap笔记—折叠实例代码
2017/03/13 Javascript
jquery平滑滚动到顶部插件使用详解
2017/05/08 jQuery
vue中使用localstorage来存储页面信息
2017/11/04 Javascript
Vue文件配置全局变量的实例
2018/09/06 Javascript
微信小程序 扭蛋抽奖机css3动画实现详解
2019/07/19 Javascript
快速解决Vue、element-ui的resetFields()方法重置表单无效的问题
2020/08/12 Javascript
[04:00]DOTA2解说界神雕侠侣 CJ第四天谷子现场过生日
2013/07/30 DOTA
[01:18]一目了然!DOTA2DotA快捷操作对比第一弹
2014/07/01 DOTA
用python + hadoop streaming 分布式编程(一) -- 原理介绍,样例程序与本地调试
2014/07/14 Python
Python实现检测服务器是否可以ping通的2种方法
2015/01/01 Python
Python多线程编程(七):使用Condition实现复杂同步
2015/04/05 Python
Python入门_浅谈字符串的分片与索引、字符串的方法
2017/05/16 Python
python flask中静态文件的管理方法
2018/03/20 Python
用Python一键搭建Http服务器的方法
2018/06/01 Python
在PyCharm导航区中打开多个Project的关闭方法
2019/01/17 Python
python传到前端的数据,双引号被转义的问题
2020/04/03 Python
Python如何绘制日历图和热力图
2020/08/07 Python
python 如何设置守护进程
2020/10/29 Python
德国汽车零件和汽车配件网上商店:kfzteile24
2018/11/14 全球购物
英国折扣高尔夫商店:Discount Golf Store
2019/11/19 全球购物
C#里面如何判断一个Object是否是某种类型(如Boolean)?
2016/02/10 面试题
学校对教师的评语
2014/04/28 职场文书
纪检干部对照检查材料
2014/08/22 职场文书
地球物理学专业推荐信
2014/09/08 职场文书
赢在执行观后感
2015/06/16 职场文书
高中语文教材(文学文化常识大全一)
2019/08/13 职场文书
导游词之苏州寒山寺
2019/12/05 职场文书