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闭包 新手版
Dec 28 Javascript
JQUERY的属性选择符和自定义选择符使用方法(二)
Apr 07 Javascript
jquery 插件学习(四)
Aug 06 Javascript
浅析onsubmit校验表单时利用ajax的return false无效问题
Jul 10 Javascript
javascript中的作用域和上下文使用简要概述
Dec 05 Javascript
require.js+vue开发微信上传图片组件
Oct 27 Javascript
JS识别浏览器类型(电脑浏览器和手机浏览器)
Nov 18 Javascript
JavaScript实现选中文字提示新浪微博分享效果
Jun 15 Javascript
angularJs使用ng-repeat遍历后选中某一个的方法
Sep 30 Javascript
iview Upload组件多个文件上传的示例代码
Sep 30 Javascript
只有 20 行的 JavaScript 模板引擎实例详解
May 11 Javascript
Javascript中window.name属性详解
Nov 19 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 和 MYSQL
2006/10/09 PHP
laravel安装和配置教程
2014/10/29 PHP
php中fsockopen用法实例
2015/01/05 PHP
PHP中list()函数用法实例简析
2016/01/08 PHP
关于laravel模板中生成URL的几种模式总结
2019/10/18 PHP
基于jQuery的倒计时实现代码
2012/05/30 Javascript
JS 仿腾讯发表微博的效果代码
2013/12/25 Javascript
javascript获取form里的表单元素的示例代码
2014/02/14 Javascript
javascript事件函数中获得事件源的两种不错方法
2014/03/17 Javascript
js实现抽奖效果
2017/03/27 Javascript
bootstrap select插件封装成Vue2.0组件
2017/04/17 Javascript
分析JS中this引发的bug
2017/12/12 Javascript
jQuery实现右侧抽屉式在线客服功能
2017/12/25 jQuery
微信小程序实现自定义加载图标功能
2018/07/19 Javascript
浅谈vux之x-input使用以及源码解读
2018/11/04 Javascript
JS合并两个数组的3种方法详解
2019/10/24 Javascript
[52:06]完美世界DOTA2联赛决赛日 Inki vs LBZS 第一场 11.08
2020/11/10 DOTA
简单介绍Python中的len()函数的使用
2015/04/07 Python
详解python异步编程之asyncio(百万并发)
2018/07/07 Python
Django调用百度AI接口实现人脸注册登录代码实例
2020/04/23 Python
一款基于css3麻将筛子3D翻转特效的实例教程
2014/12/31 HTML / CSS
垃圾回收的优点和原理。并考虑2种回收机制
2016/10/16 面试题
平面设计师工作职责范文
2013/12/03 职场文书
学校卫生检查制度
2014/02/03 职场文书
实习生岗位职责
2014/04/12 职场文书
二年级评语大全
2014/04/23 职场文书
英语教师自荐信
2014/05/26 职场文书
学习型班组申报材料
2014/05/31 职场文书
高校群众路线教育实践活动剖析材料
2014/10/10 职场文书
教育合作协议范本
2014/10/17 职场文书
2014年机关作风建设工作总结
2014/10/23 职场文书
企业宣传语大全
2015/07/13 职场文书
2016年第104个国际护士节活动总结
2016/04/06 职场文书
上手简单,功能强大的Python爬虫框架——feapder
2021/04/27 Python
基于Go Int转string几种方式性能测试
2021/04/28 Golang
使用Djongo模块在Django中使用MongoDB数据库
2021/06/20 Python