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 相关文章推荐
在视频前插入广告
Nov 20 Javascript
JS实现图片横向滚动效果示例代码
Sep 04 Javascript
详解Javascript动态操作CSS
Dec 08 Javascript
浅析2种JavaScript继承方式
Dec 04 Javascript
jQuery简单实现页面元素置顶时悬浮效果示例
Aug 01 Javascript
简单理解vue中el、template、replace元素
Oct 27 Javascript
ES6(ECMAScript 6)新特性之模板字符串用法分析
Apr 01 Javascript
jquery基于layui实现二级联动下拉选择(省份城市选择)
Jun 20 jQuery
Vue项目部署的实现(阿里云+Nginx代理+PM2)
Mar 26 Javascript
15 分钟掌握vue-next响应式原理
Oct 13 Javascript
使用Vue调取接口,并渲染数据的示例代码
Oct 28 Javascript
Element-UI+Vue模式使用总结
Jan 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
PHP四大安全策略
2014/03/12 PHP
php正则匹配html中带class的div并选取其中内容的方法
2015/01/13 PHP
浅谈PHP的exec()函数无返回值排查方法(必看)
2017/03/31 PHP
PHP设计模式之命令模式示例详解
2020/12/20 PHP
javaScript call 函数的用法说明
2010/04/09 Javascript
javascript学习笔记(十一) 正则表达式介绍
2012/06/20 Javascript
js实现在文本框光标处添加字符的方法介绍
2012/11/24 Javascript
Js 获取Gridview选中行的内容操作步骤
2013/02/05 Javascript
javascript arguments使用示例
2014/12/16 Javascript
JS模拟按钮点击功能的方法
2015/12/22 Javascript
JavaScript仿网易选项卡制作代码
2016/10/06 Javascript
微信小程序 wx.uploadFile在安卓手机上面the same task is working问题解决
2016/12/14 Javascript
微信小程序实现图片预加载组件
2017/01/18 Javascript
基于vue2.0动态组件及render详解
2018/03/17 Javascript
JavaScript数组,JSON对象实现动态添加、修改、删除功能示例
2018/05/26 Javascript
在vue中封装方法以及多处引用该方法详解
2020/08/14 Javascript
在Linux系统上安装Python的Scrapy框架的教程
2015/06/11 Python
Python3连接MySQL(pymysql)模拟转账实现代码
2016/05/24 Python
flask + pymysql操作Mysql数据库的实例
2017/11/13 Python
Python读csv文件去掉一列后再写入新的文件实例
2017/12/28 Python
python程序封装为win32服务的方法
2021/03/07 Python
vscode 配置 python3开发环境的方法
2019/09/19 Python
基于python纯函数实现井字棋游戏
2020/05/27 Python
如何利用Python写个坦克大战
2020/11/18 Python
CSS3的Border-radius轻松制作圆角
2012/12/24 HTML / CSS
科沃斯机器人官网商城:Ecovacs
2016/08/29 全球购物
会计找工作求职信范文
2013/12/09 职场文书
幼教毕业生自我鉴定
2014/01/12 职场文书
大学军训感言1500字
2014/03/09 职场文书
宝宝满月酒主持词和仪式流程
2014/03/27 职场文书
个人年终总结开头
2015/03/06 职场文书
中秋节晚会开场白
2015/05/29 职场文书
音乐之声观后感
2015/06/04 职场文书
导游词之西江千户苗寨
2019/12/24 职场文书
Java使用Unsafe类的示例详解
2021/09/25 Java/Android
Python中tqdm的使用和例子
2022/09/23 Python