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 相关文章推荐
javascript 多级checkbox选择效果
Aug 20 Javascript
使用 JavaScript 进行函数式编程 (一) 翻译
Oct 02 Javascript
JavaScript实现的浮动层框架用法实例分析
Oct 10 Javascript
js+canvas绘制五角星的方法
Jan 28 Javascript
基于Javascript实现二级联动菜单效果
Mar 04 Javascript
JavaScript的六种继承方式(推荐)
Jun 26 Javascript
实例教学如何写vue插件
Nov 30 Javascript
Vue2.0学习系列之项目上线的方法步骤(图文)
Sep 25 Javascript
如何解决js函数防抖、节流出现的问题
Jun 17 Javascript
Layui事件监听的实现(表单和数据表格)
Oct 17 Javascript
vue 实现setInterval 创建和销毁实例
Jul 21 Javascript
JavaScript逻辑运算符相关总结
Sep 04 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
getJSON跨域SyntaxError问题分析
2014/08/07 PHP
使用PHP编写发红包程序
2015/07/22 PHP
在PHP语言中使用JSON和将json还原成数组的方法
2016/07/19 PHP
PHP注释语法规范与命名规范详解篇
2018/01/21 PHP
不错的新闻标题颜色效果
2006/12/10 Javascript
js静态作用域的功能。
2006/12/25 Javascript
多种方法实现load加载完成后把图片一次性显示出来
2014/02/19 Javascript
JavaScript获取网页表单action属性的方法
2015/04/02 Javascript
jquery模拟进度条实现方法
2015/08/03 Javascript
将JSON字符串转换成Map对象的方法
2016/11/30 Javascript
vue2.0开发入门笔记之.vue文件的生成和使用
2017/09/19 Javascript
ES6使用export和import实现模块化的方法
2018/09/10 Javascript
微信小程序拍照和摄像功能实现方法示例
2019/02/01 Javascript
原生JS实现逼真的图片3D旋转效果详解
2019/02/16 Javascript
微信小程序canvas截取任意形状的实现代码
2020/01/13 Javascript
es6数组之扩展运算符操作实例分析
2020/04/25 Javascript
使用C语言来扩展Python程序和Zope服务器的教程
2015/04/14 Python
详解Python中用于计算指数的exp()方法
2015/05/14 Python
利用python实现数据分析
2017/01/11 Python
在python里从协程返回一个值的示例
2019/02/19 Python
python实现手机销售管理系统
2019/03/19 Python
Python下简易的单例模式详解
2019/04/08 Python
django的ORM操作 删除和编辑实现详解
2019/07/24 Python
浅析Python 简单工厂模式和工厂方法模式的优缺点
2020/07/13 Python
pytorch学习教程之自定义数据集
2020/11/10 Python
一个不错的HTML5 Canvas多层点击事件监听实例
2014/04/29 HTML / CSS
阿玛尼美妆加拿大官方商城:Giorgio Armani Beauty加拿大
2017/10/24 全球购物
Booking.com西班牙:全球酒店预订
2018/03/30 全球购物
PHP如何防止SQL注入
2014/05/03 面试题
电子商务专业在校生实习自我鉴定
2013/09/29 职场文书
给校长的一封建议书
2014/03/12 职场文书
社区优秀志愿者先进事迹
2014/05/09 职场文书
我的中国梦演讲稿高中篇
2014/08/19 职场文书
厨师长岗位职责范本
2014/08/25 职场文书
初中语文教学随笔
2015/08/15 职场文书
高中语文教学反思范文
2016/02/16 职场文书