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 相关文章推荐
判断是否输入完毕再激活提交按钮
Jun 26 Javascript
jQuery之end()和pushStack()使用介绍
Feb 07 Javascript
深入理解Javascript作用域与变量提升
Dec 09 Javascript
JQuery插件ajaxfileupload.js异步上传文件实例
May 19 Javascript
通过node-mysql搭建Windows+Node.js+MySQL环境的教程
Mar 01 Javascript
JavaScript条件判断_动力节点Java学院整理
Jun 26 Javascript
使用JQ完成表格隔行换色的简单实例
Aug 25 Javascript
jQuery实现动态添加节点与遍历节点功能示例
Nov 09 jQuery
Vue实现表格批量审核功能实例代码
May 28 Javascript
详解基于Vue的支持数据双向绑定的select组件
Sep 02 Javascript
JavaScript进阶(三)闭包原理与用法详解
May 09 Javascript
vue如何使用外部特殊字体的操作
Jul 30 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
MySQL数据库转移,access,sql server 转 MySQL 的图文教程
2007/09/02 PHP
php统计数组元素个数的方法
2015/07/02 PHP
详解PHP中的null合并运算符
2015/12/30 PHP
通过chrome浏览器控制台(Console)进行PHP Debug的方法
2016/10/19 PHP
PHP基于SimpleXML生成和解析xml的方法示例
2017/07/17 PHP
JavaScript 编程引入命名空间的方法
2007/06/29 Javascript
jQuery入门问答 整理的几个常见的初学者问题
2010/02/22 Javascript
javascript教程:关于if简写语句优化的方法
2014/05/17 Javascript
Javascript实现禁止输入中文或英文的例子
2014/12/09 Javascript
js图片模糊切换显示特效的方法
2015/02/17 Javascript
jQuery+AJAX实现无刷新下拉加载更多
2015/07/03 Javascript
js实现iframe框架取值的方法(兼容IE,firefox,chrome等)
2015/11/26 Javascript
jQuery.datatables.js插件用法及api实例详解
2016/10/28 Javascript
js中动态创建json,动态为json添加属性、属性值的实例
2016/12/02 Javascript
原生js验证简洁注册登录页面
2016/12/17 Javascript
js以及jquery实现手风琴效果
2020/04/17 Javascript
js获取元素下的第一级子元素的方法(推荐)
2017/03/05 Javascript
简单谈谈axios中的get,post方法
2017/06/25 Javascript
Vue组件通信之Bus的具体使用
2017/12/28 Javascript
vue里面父组件修改子组件样式的方法
2018/02/03 Javascript
JavaScript动态创建二维数组的方法示例
2019/02/01 Javascript
Element实现表格嵌套、多个表格共用一个表头的方法
2020/05/09 Javascript
JavaScript实现世界各地时间显示
2020/09/07 Javascript
vue keep-alive实现多组件嵌套中个别组件存活不销毁的操作
2020/10/30 Javascript
对django 模型 unique together的示例讲解
2019/08/06 Python
PyCharm中关于安装第三方包的三个建议
2020/09/17 Python
CSS3实现银灰色动画效果的导航菜单代码
2015/09/01 HTML / CSS
实习自我鉴定模板
2013/09/28 职场文书
光荣入党自我鉴定
2014/01/22 职场文书
运动会解说词100字
2014/01/31 职场文书
出国签证在职证明范本
2014/11/24 职场文书
2015年乡镇纪检工作总结
2015/04/22 职场文书
拉贝日记观后感
2015/06/05 职场文书
大学体育课感想
2015/08/10 职场文书
2016基督教会圣诞节开幕词
2016/03/04 职场文书
使用ORM新增数据在Mysql中的操作步骤
2021/07/26 MySQL