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 23 Javascript
javascript操作表格排序实例分析
May 06 Javascript
实例讲解jQuery EasyUI tree中state属性慎用
Apr 01 Javascript
微信小程序 获取相册照片实例详解
Nov 16 Javascript
javaScript语法总结
Nov 25 Javascript
全面解析Node.js 8 重要功能和修复
Jun 02 Javascript
jQuery使用ajax_动力节点Java学院整理
Jul 05 jQuery
ES6学习教程之块级作用域详解
Oct 09 Javascript
Angular实现模版驱动表单的自定义校验功能(密码确认为例)
May 17 Javascript
vue 父组件中调用子组件函数的方法
Jun 06 Javascript
Vue 3.0 前瞻Vue Function API新特性体验
Aug 12 Javascript
vue+iview使用树形控件的具体使用
Nov 02 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
dedecms采集中可以过滤多行代码的正则表达式
2007/03/17 PHP
一段php加密解密的代码
2007/07/16 PHP
php处理json时中文问题的解决方法
2011/04/12 PHP
php生成缩略图示例代码分享(使用gd库实现)
2014/01/20 PHP
可在线编辑网页文字效果代码(单击)
2013/03/02 Javascript
extjs4 treepanel动态改变行高度示例
2013/12/17 Javascript
浅析Cookie中的Path与domain
2013/12/18 Javascript
JavaScript日期类型的一些用法介绍
2015/03/02 Javascript
jQuery实现悬浮在右上角的网页客服效果代码
2015/10/24 Javascript
直接拿来用的页面跳转进度条JS实现
2016/01/06 Javascript
浅谈EasyUI常用控件的禁用方法
2016/11/09 Javascript
详谈Node.js之操作文件系统
2017/08/29 Javascript
Vue下的国际化处理方法
2017/12/18 Javascript
详解vue中点击空白处隐藏div的实现(用指令实现)
2018/04/19 Javascript
解决vue.js this.$router.push无效的问题
2018/09/03 Javascript
Node.JS发送http请求批量检查文件中的网页地址、服务是否有效可用
2019/11/20 Javascript
[01:08:43]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第一场 1月9日
2021/03/11 DOTA
Pandas之MultiIndex对象的示例详解
2019/06/25 Python
pytorch torch.nn.AdaptiveAvgPool2d()自适应平均池化函数详解
2020/01/03 Python
Python实现在Windows平台修改文件属性
2020/03/05 Python
Python实现在线批量美颜功能过程解析
2020/06/10 Python
用css3实现当鼠标移进去时当前亮其他变灰效果
2014/04/08 HTML / CSS
Superdry极度乾燥官网:日本街头风格,纯英国制造品牌
2016/10/31 全球购物
Boden美国官网:英伦原创时装品牌
2017/07/03 全球购物
面向对象概念面试题(.NET)
2016/11/04 面试题
Java如何读取CLOB字段
2013/10/10 面试题
《苏珊的帽子》教学反思
2014/04/07 职场文书
协议书样本
2014/04/23 职场文书
2014年银行工作总结范文
2014/11/12 职场文书
2014年监理工作总结范文
2014/11/17 职场文书
订货会邀请函
2015/01/31 职场文书
2015年学校安全管理工作总结
2015/05/11 职场文书
委托收款证明
2015/06/23 职场文书
2016年推广普通话宣传周活动总结
2016/04/06 职场文书
Python+Tkinter制作专属图形化界面
2022/04/01 Python
vue-cli3.x配置全局的scss的时候报错问题及解决
2022/04/30 Vue.js