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 相关文章推荐
jQuery显示和隐藏 常用的状态判断方法
Jan 29 Javascript
jquery性能优化高级技巧
Aug 24 Javascript
在ASP.NET MVC项目中使用RequireJS库的用法示例
Feb 15 Javascript
jquery仿QQ登录账号选择下拉框效果
Mar 22 Javascript
Javascript如何判断数据类型和数组类型
Jun 22 Javascript
JavaScript算法系列之快速排序(Quicksort)算法实例详解
Sep 04 Javascript
简单理解vue中el、template、replace元素
Oct 27 Javascript
js基于FileSaver.js 浏览器导出Excel文件的示例
Aug 15 Javascript
浅谈js中的this问题
Aug 31 Javascript
详解Vue2 SSR 缓存 Api 数据
Nov 20 Javascript
Java设计中的Builder模式的介绍
Mar 22 Javascript
在vue中使用回调函数,this调用无效的解决
Aug 11 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
PHP简单选择排序算法实例
2015/01/26 PHP
利用JS自动打开页面上链接的实现代码
2011/09/25 Javascript
js如何获取file控件的完整路径具体实现代码
2013/05/15 Javascript
如何设置iframe高度自适应在跨域情况下的可用方法
2013/09/06 Javascript
JavaScript设置表单上传时文件个数的方法
2015/08/11 Javascript
基于jquery实现复选框全选,反选,全不选等功能
2015/10/16 Javascript
Angularjs中使用Filters详解
2016/03/11 Javascript
用JavaScript获取页面文档内容的实现代码
2016/06/10 Javascript
JS实现弹出居中的模式窗口示例
2016/06/20 Javascript
基于vue的fullpage.js单页滚动插件
2017/03/20 Javascript
基于vue.js中事件修饰符.self的用法(详解)
2018/02/23 Javascript
解决vue 打包发布去#和页面空白的问题
2018/09/04 Javascript
vue控制多行文字展开收起的实现示例
2019/10/11 Javascript
Nodejs使用archiver-zip-encrypted库加密压缩文件时报错(解决方案)
2019/11/18 NodeJs
jQuery与原生JavaScript选择HTML元素集合用法对比分析
2019/11/26 jQuery
[01:23:59]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 VP vs Secret
2018/04/03 DOTA
[06:43]DAC2018 4.5 SOLO赛 Maybe vs Paparazi
2018/04/06 DOTA
[57:29]Alliance vs KG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/17 DOTA
Python中声明只包含一个元素的元组数据方法
2014/08/25 Python
Python 做曲线拟合和求积分的方法
2018/12/29 Python
python读取Excel表格文件的方法
2019/09/02 Python
wxpython绘制音频效果
2019/11/18 Python
通过python调用adb命令对App进行性能测试方式
2020/04/23 Python
Python如何实现FTP功能
2020/05/28 Python
python利用蒙版抠图(使用PIL.Image和cv2)输出透明背景图
2020/08/04 Python
css3 自定义字体font-face使用介绍
2014/05/14 HTML / CSS
naturalizer加拿大官网:美国娜然女鞋
2017/04/04 全球购物
凯伦·米莲女装网上商店:Karen Millen
2017/11/07 全球购物
仓库管理专业个人的自我评价
2013/12/30 职场文书
经管应届生求职信范文
2014/05/18 职场文书
优秀乡村医生先进事迹材料
2014/08/23 职场文书
小学生迎国庆演讲稿
2014/09/05 职场文书
2014幼儿园卫生保健工作总结
2014/12/05 职场文书
班主任高考寄语
2015/02/26 职场文书
2015年招商引资工作总结
2015/04/25 职场文书
企业管理不到位检讨书
2019/06/27 职场文书