Node.JS 循环递归复制文件夹目录及其子文件夹下的所有文件


Posted in Javascript onSeptember 18, 2017

实现代码一:

var fs  = require('fs')
var path = require('path')

var copyFile = function(srcPath, tarPath, cb) {
 var rs = fs.createReadStream(srcPath)
 rs.on('error', function(err) {
  if (err) {
   console.log('read error', srcPath)
  }
  cb && cb(err)
 })

 var ws = fs.createWriteStream(tarPath)
 ws.on('error', function(err) {
  if (err) {
   console.log('write error', tarPath)
  }
  cb && cb(err)
 })
 ws.on('close', function(ex) {
  cb && cb(ex)
 })

 rs.pipe(ws)
}

复制目录及其子目录

var copyFolder = function(srcDir, tarDir, cb) {
 fs.readdir(srcDir, function(err, files) {
  var count = 0
  var checkEnd = function() {
   ++count == files.length && cb && cb()
  }

  if (err) {
   checkEnd()
   return
  }

  files.forEach(function(file) {
   var srcPath = path.join(srcDir, file)
   var tarPath = path.join(tarDir, file)

   fs.stat(srcPath, function(err, stats) {
    if (stats.isDirectory()) {
     console.log('mkdir', tarPath)
     fs.mkdir(tarPath, function(err) {
      if (err) {
       console.log(err)
       return
      }

      copyFolder(srcPath, tarPath, checkEnd)
     })
    } else {
     copyFile(srcPath, tarPath, checkEnd)
    }
   })
  })

  //为空时直接回调
  files.length === 0 && cb && cb()
 })
}

使用时

copyFolder('...', '....', function(err) {
 if (err) {

  return
 }

 //continue
})

文章到此结束,希望有帮助的朋友多多支持三水点靠木。

Javascript 相关文章推荐
jQuery autocomplete插件修改
Apr 17 Javascript
javascript之典型高阶函数应用介绍二
Jan 10 Javascript
通过js获取div的background-image属性
Oct 15 Javascript
javascript实现iframe框架延时加载的方法
Oct 30 Javascript
innerHTML在IE中报错解决方案
Dec 15 Javascript
javascript宿主对象之window.navigator详解
Sep 07 Javascript
PHP获取当前页面完整URL的方法
Dec 02 Javascript
bootstrap table分页模板和获取表中的ID方法
Jan 10 Javascript
bootstrapValidator 重新启用提交按钮的方法
Feb 20 Javascript
node.JS md5加密中文与php结果不一致的解决方法
May 05 Javascript
iframe高度自适应及隐藏滚动条的实例详解
Sep 29 Javascript
在vue+element ui框架里实现lodash的debounce防抖
Nov 13 Javascript
为什么我们要做三份 Webpack 配置文件
Sep 18 #Javascript
分析javascript中9 个常见错误阻碍你进步
Sep 18 #Javascript
十个免费的web前端开发工具详细整理
Sep 18 #Javascript
Redux 和 Mobx的选择问题:让你不再困惑!
Sep 18 #Javascript
HTML5开发Kinect体感游戏的实例应用
Sep 18 #Javascript
聊聊那些使用前端Javascript实现的机器学习类库
Sep 18 #Javascript
Web技术实现移动监测的介绍
Sep 18 #Javascript
You might like
php图片水印添加、压缩、剪切的封装类实现
2020/04/18 PHP
php微信公众号开发模式详解
2016/11/28 PHP
thinkphp查询,3.X 5.0方法(亲试可行)
2017/06/17 PHP
PHP实现的堆排序算法详解
2017/08/17 PHP
php依赖注入知识点详解
2019/09/23 PHP
laravel接管Dingo-api和默认的错误处理方式
2019/10/25 PHP
js中访问html中iframe的文档对象的代码[IE6,IE7,IE8,FF]
2011/01/08 Javascript
Java 正则表达式学习总结和一些小例子
2012/09/13 Javascript
基于jquery实现点击左右按钮图片横向滚动
2013/04/11 Javascript
javascript实现颜色渐变的方法
2013/10/30 Javascript
Javascript学习笔记之函数篇(五) : 构造函数
2014/11/23 Javascript
node.js中的emitter.on方法使用说明
2014/12/10 Javascript
javascript中 try catch用法
2015/08/16 Javascript
js脚本分页代码分享(7种样式)
2015/08/19 Javascript
jQuery实现标题有打字效果的焦点图代码
2015/11/16 Javascript
AngularJS实现的输入框字数限制提醒功能示例
2017/10/26 Javascript
JavaScript插件Tab选项卡效果
2017/11/14 Javascript
vue实现图片加载完成前的loading组件方法
2018/02/05 Javascript
javascript少儿编程关于返回值的函数内容
2018/05/27 Javascript
微信小程序登录态和检验注册过没的app.js写法
2019/05/22 Javascript
[05:59]2018DOTA2国际邀请赛寻真——只为胜利的Secret
2018/08/13 DOTA
[04:15]DOTA2-DPC中国联赛 正赛 Ehome vs Aster 选手采访
2021/03/11 DOTA
python自动化测试之从命令行运行测试用例with verbosity
2014/09/28 Python
Python遍历zip文件输出名称时出现乱码问题的解决方法
2015/04/08 Python
使用python编写监听端
2018/04/12 Python
基于Django URL传参 FORM表单传数据 get post的用法实例
2018/05/28 Python
python实现对列表中的元素进行倒序打印
2019/11/23 Python
python 还原梯度下降算法实现一维线性回归
2020/10/22 Python
Troy-Bilt官网:草坪割草机、吹雪机、分蘖机等
2019/02/19 全球购物
Java工程师面试集锦之Spring框架
2013/06/16 面试题
美术教师岗位职责
2014/03/18 职场文书
优秀家长事迹材料
2014/05/17 职场文书
干部作风建设心得体会
2014/10/22 职场文书
党的群众路线教育实践活动心得体会(乡镇)
2014/11/03 职场文书
2015年党日活动总结范文
2015/03/25 职场文书
uniapp开发小程序的经验总结
2021/04/08 Javascript