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 通过事件委派一次绑定多种事件,以减少事件冗余
Jun 30 Javascript
node.js正则表达式获取网页中所有链接的代码实例
Jun 03 Javascript
Bootstrap Fileinput文件上传组件用法详解
May 10 Javascript
Boostrap基础教程之JavaScript插件篇
Sep 08 Javascript
Bootstrap table简单使用总结
Feb 15 Javascript
Angular2仿照微信UI实现9张图片上传和预览的示例代码
Oct 19 Javascript
jquery radio 动态控制选中失效问题的解决方法
Feb 28 jQuery
在小程序/mpvue中使用flyio发起网络请求的方法
Sep 13 Javascript
jQuery时间戳和日期相互转换操作示例
Dec 07 jQuery
Element-ui el-tree新增和删除节点后如何刷新tree的实例
Aug 31 Javascript
nuxt 页面路由配置,主页轮播组件开发操作
Nov 05 Javascript
Flexible.js可伸缩布局实现方法详解
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 开发环境配置(Zend Studio)
2010/04/28 PHP
PHP 面向对象程序设计(oop)学习笔记(一) - 抽象类、对象接口、instanceof 和契约式编程
2014/06/12 PHP
PHP使用PDO抽象层获取查询结果的方法示例
2018/05/10 PHP
JavaScript 继承详解(四)
2009/07/13 Javascript
jquery validator 插件增加日期比较方法
2010/02/21 Javascript
javascript继承之为什么要继承
2012/11/10 Javascript
js一般方法改写成面向对象方法的无限级折叠菜单示例代码
2013/07/04 Javascript
js 距离某一时间点时间是多少实现代码
2013/10/14 Javascript
如何在JavaScript中实现私有属性的写类方式(一)
2013/12/04 Javascript
JS实现左右拖动改变内容显示区域大小的方法
2015/10/13 Javascript
jquery.cookie实现的客户端购物车操作实例
2015/12/24 Javascript
移动端翻页插件dropload.js(支持Zepto和jQuery)
2016/07/27 Javascript
jQuery插件JWPlayer视频播放器用法实例分析
2017/01/11 Javascript
vue中用H5实现文件上传的方法实例代码
2017/05/27 Javascript
Vue项目分环境打包的实现步骤
2018/04/02 Javascript
Vue 页面跳转不用router-link的实现代码
2018/04/12 Javascript
Vue中Axios从远程/后台读取数据
2019/01/21 Javascript
vue+animation实现翻页动画
2020/06/29 Javascript
基于vue hash模式微信分享#号的解决
2020/09/07 Javascript
Vue使用CDN引用项目组件,减少项目体积的步骤
2020/10/30 Javascript
解决vue init webpack 下载依赖卡住不动的问题
2020/11/09 Javascript
python快速查找算法应用实例
2014/09/26 Python
Python urllib、urllib2、httplib抓取网页代码实例
2015/05/09 Python
python去除扩展名的实例讲解
2018/04/23 Python
python numpy生成等差数列、等比数列的实例
2020/02/25 Python
CSS实现定位元素居中的方法
2015/06/23 HTML / CSS
AmazeUI折叠式卡片布局,整合内容列表、表格组件实现
2020/08/20 HTML / CSS
俄罗斯童装网上商店:BebaKids
2020/06/06 全球购物
Clos19英国:高档香槟、葡萄酒和烈酒在线购物平台
2020/07/10 全球购物
销售代表求职自荐信
2013/10/01 职场文书
大专生工程监理求职信
2013/10/04 职场文书
2014年人事专员工作总结
2014/11/19 职场文书
企业介绍信范文
2015/01/30 职场文书
大明湖导游词
2015/02/03 职场文书
保护环境的宣传语
2015/07/13 职场文书
SQLServer 错误: 15404,无法获取有关 Windows NT 组/用户 WIN-8IVSNAQS8T7\Administrator 的信息
2021/06/30 SQL Server