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 相关文章推荐
javascript下过滤数组重复值的代码
Sep 10 Javascript
SWFObject Flash js调用类
Jul 08 Javascript
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(下:动画篇)
Mar 24 Javascript
javascript静态页面传值的三种方法分享
Nov 12 Javascript
js日期、星座的级联显示代码
Jan 23 Javascript
javascript 动态创建表格的2种方法总结
Mar 04 Javascript
Nginx上传文件全部缓存解决方案
Aug 17 Javascript
js实现目录链接,内容跟着目录滚动显示的简单实例
Oct 15 Javascript
浅谈Angular.js中使用$watch监听模型变化
Jan 10 Javascript
小程序兼容安卓和IOS数据处理问题及坑
Sep 18 Javascript
JavaScript创建表格的方法
Apr 13 Javascript
vant 自定义 van-dropdown-item的用法
Aug 05 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/12/13 PHP
PHP 远程关机实现代码
2009/11/10 PHP
php学习之简单计算器实现代码
2011/06/09 PHP
PHP操作Memcache实例介绍
2013/06/14 PHP
解析php php_openssl.dll的作用
2013/07/01 PHP
PHP中使用php5-ffmpeg撷取视频图片实例
2015/01/07 PHP
PHP如何获取当前主机、域名、网址、路径、端口等参数
2017/06/09 PHP
[原创]PHP正则匹配中英文、数字及下划线的方法【用户名验证】
2017/08/01 PHP
PHP实现SMTP邮件的发送实例
2018/09/27 PHP
jqeury eval将字符串转换json的方法
2011/01/20 Javascript
关于捕获用户何时点击window.onbeforeunload的取消事件
2011/03/06 Javascript
JavaScript中的稀疏数组与密集数组[译]
2012/09/17 Javascript
浅析js中的浮点型运算问题
2014/01/06 Javascript
JQuery与JS里submit()的区别示例介绍
2014/02/17 Javascript
Angular.js与Bootstrap相结合实现手风琴菜单代码
2016/04/13 Javascript
JavaScript每天必学之数组和对象部分
2016/09/17 Javascript
微信小程序去哪里找 小程序到底如何使用(附小程序名单)
2017/01/09 Javascript
jQuery源码分析之init的详细介绍
2017/02/13 Javascript
Webpack打包css后z-index被重新计算的解决方法
2017/06/18 Javascript
vue中配置mint-ui报css错误问题的解决方法
2017/10/11 Javascript
Angular2使用vscode断点调试ts文件的方法
2017/12/13 Javascript
vue项目中的webpack-dev-sever配置方法
2017/12/14 Javascript
Vue组件中的data必须是一个function的原因浅析
2018/09/03 Javascript
[52:05]EG vs OG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
python中lambda函数 list comprehension 和 zip函数使用指南
2014/09/28 Python
Python使用Tkinter实现转盘抽奖器的步骤详解
2020/01/06 Python
详解Anaconda安装tensorflow报错问题解决方法
2020/11/01 Python
python基于pygame实现飞机大作战小游戏
2020/11/19 Python
使用python操作lmdb对数据读取的实例
2020/12/11 Python
比利时网上药店: Drogisterij.net
2017/03/17 全球购物
银行见习期自我鉴定
2014/01/29 职场文书
《陶罐和铁罐》教学反思
2014/02/19 职场文书
医学求职信
2014/05/28 职场文书
52条SQL语句教你性能优化
2021/05/25 MySQL
从零开始在Centos7上部署SpringBoot项目
2022/04/07 Servers
Android中View.post和Handler.post的关系
2022/06/05 Java/Android