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 异步调用框架 (Part 1 - 问题 & 场景)
Aug 03 Javascript
Jquery中显示隐藏的实现代码分析
Jul 26 Javascript
如何用JavaScript动态呼叫函数(两种方式)
May 03 Javascript
jquery mobile事件多次绑定示例代码
Sep 13 Javascript
基于jQuery实现返回顶部实例代码
Jan 01 Javascript
javascript关于继承解析
May 10 Javascript
JS原型对象的创建方法详解
Jun 16 Javascript
React Native自定义控件底部抽屉菜单的示例
Feb 08 Javascript
vue全局组件与局部组件使用方法详解
Mar 29 Javascript
vue-router中scrollBehavior的巧妙用法
Jul 09 Javascript
JavaScript事件对象event用法分析
Jul 27 Javascript
Vue实现购物车基本功能
Nov 08 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之第一天
2006/10/09 PHP
php下利用curl判断远程文件是否存在的实现代码
2011/10/08 PHP
PHP中extract()函数的定义和用法
2012/08/17 PHP
PHP SPL使用方法和他的威力
2013/11/12 PHP
PHP的mysqli_stat()函数讲解
2019/01/23 PHP
laravel多条件查询方法(and,or嵌套查询)
2019/10/09 PHP
JS获取dom 对象 ajax操作 读写cookie函数
2009/11/18 Javascript
JS父页面与子页面相互传值方法
2014/03/05 Javascript
jQuery切换所有复选框选中状态的方法
2015/07/02 Javascript
jQuery插件开发汇总
2016/05/15 Javascript
jQuery Ajax页面局部加载方法汇总
2016/06/02 Javascript
Vue2.0利用 v-model 实现组件props双向绑定的优美解决方案
2017/03/13 Javascript
利用js的闭包原理做对象封装及调用方法
2017/04/07 Javascript
vue transition 在子组件中失效的解决
2019/11/12 Javascript
微信小程序scroll-view锚点链接滚动跳转功能
2019/12/12 Javascript
vue+element UI实现树形表格
2020/12/29 Vue.js
[07:57]DOTA2热力大趴狂欢夜 广州站活动回顾
2013/11/27 DOTA
[08:53]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS 选手采访
2021/03/11 DOTA
python单例模式实例分析
2015/04/08 Python
python+matplotlib实现动态绘制图片实例代码(交互式绘图)
2018/01/20 Python
python OpenCV学习笔记实现二维直方图
2018/02/08 Python
详解Python计算机视觉 图像扭曲(仿射扭曲)
2019/03/27 Python
pandas dataframe的合并实现(append, merge, concat)
2019/06/24 Python
快速解决jupyter启动卡死的问题
2020/04/10 Python
基于python实现图片转字符画代码实例
2020/09/04 Python
HTML5本地存储之Web Storage详解
2016/07/04 HTML / CSS
自我推荐书
2013/12/04 职场文书
高中生家长寄语大全
2014/04/03 职场文书
课内比教学心得体会
2014/09/09 职场文书
个人四风问题对照检查材料
2014/09/26 职场文书
ktv服务员岗位职责
2015/02/09 职场文书
原告代理词范文
2015/05/25 职场文书
可怜妈妈观后感
2015/06/09 职场文书
浪漫的婚礼主持词
2015/06/30 职场文书
教师节大会主持词
2015/07/06 职场文书
求职信如何撰写?
2019/05/22 职场文书