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 相关文章推荐
Add a Table to a Word Document
Jun 15 Javascript
Mootools 1.2教程 Fx.Morph、Fx选项和Fx事件
Sep 15 Javascript
JavaScript编程的10个实用小技巧
Apr 18 Javascript
node.js中的emitter.emit方法使用说明
Dec 10 Javascript
Jquery解析json字符串及json数组的方法
May 29 Javascript
使用 JavaScript 进行函数式编程 (一) 翻译
Oct 02 Javascript
学习JavaScript设计模式(代理模式)
Dec 03 Javascript
浅谈js的url解析函数封装
Jun 28 Javascript
AngularJs concepts详解及示例代码
Sep 01 Javascript
JS中闭包的经典用法小结(2则示例)
Dec 28 Javascript
js单页hash路由原理与应用实战详解
Aug 14 Javascript
解决vue页面DOM操作不生效的问题
Mar 17 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聊天室技术
2006/10/09 PHP
PHP封装curl的调用接口及常用函数详解
2018/05/31 PHP
自动更新作用
2006/10/08 Javascript
window.location.href的用法(动态输出跳转)
2014/08/09 Javascript
jQuery+AJAX实现无刷新下拉加载更多
2015/07/03 Javascript
浅谈angular.js中实现双向绑定的方法$watch $digest $apply
2015/10/14 Javascript
Javascript中的Prototype到底是什么
2016/02/16 Javascript
jQuery判断浏览器并动态调整select宽度的方法
2016/03/02 Javascript
jQuery日历插件datepicker用法详解
2016/03/03 Javascript
javascript学习指南之回调问题
2016/04/23 Javascript
JS弹出新窗口被拦截的解决方法
2016/08/09 Javascript
js本地图片预览实现代码
2016/10/09 Javascript
jQuery动态添加与删除tr行实例代码
2016/10/18 Javascript
JS实现倒计时(天数、时、分、秒)
2016/11/16 Javascript
vue基于mint-ui的城市选择3级联动的示例
2017/10/25 Javascript
JS+HTML+CSS实现轮播效果
2017/11/28 Javascript
解决在vue项目中,发版之后,背景图片报错,路径不对的问题
2018/03/06 Javascript
django使用channels2.x实现实时通讯
2018/11/28 Javascript
js canvas实现写字动画效果
2018/11/30 Javascript
vue-router 起步步骤详解
2019/03/26 Javascript
详解vue的数据劫持以及操作数组的坑
2019/04/18 Javascript
对vue中的事件穿透与禁止穿透实例详解
2019/10/28 Javascript
javascript实现商品图片放大镜
2019/11/28 Javascript
Python模块学习 datetime介绍
2012/08/27 Python
python类:class创建、数据方法属性及访问控制详解
2016/07/25 Python
TensorFlow 读取CSV数据的实例
2020/02/05 Python
Python Django中的STATIC_URL 设置和使用方式
2020/03/27 Python
Python实现仿射密码的思路详解
2020/04/23 Python
Peter Millar官网:美国高档生活服饰品牌
2018/07/02 全球购物
会计专业自我鉴定范文
2013/12/29 职场文书
茶叶生产计划书
2014/01/10 职场文书
《燕子专列》教学反思
2014/02/21 职场文书
四风问题个人剖析材料
2014/10/07 职场文书
2015年幼儿园中班开学寄语
2015/05/27 职场文书
2015中秋节晚会主持词
2015/07/01 职场文书
Python基础之赋值,浅拷贝,深拷贝的区别
2021/04/30 Python