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 相关文章推荐
让innerText在firefox火狐和IE浏览器都能用的写法
May 14 Javascript
一个JavaScript防止表单重复提交的实例
Oct 21 Javascript
jQuery中removeProp()方法用法实例
Jan 05 Javascript
js实现鼠标移到链接文字弹出一个提示层的方法
May 11 Javascript
Vuex和前端缓存的整合策略详解
May 09 Javascript
Bootstrap下拉菜单更改为悬停(hover)触发的方法
May 24 Javascript
Vue2.0 slot分发内容与props验证的方法
Dec 12 Javascript
VSCode 配置React Native开发环境的方法
Dec 27 Javascript
React性能优化系列之减少props改变的实现方法
Jan 17 Javascript
Vue基础学习之项目整合及优化
Jun 02 Javascript
vue通过数据过滤实现表格合并
Nov 30 Javascript
JS对日期操作封装代码实例
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的单引号和双引号 字符串效率
2009/05/27 PHP
解决php extension 加载顺序问题
2019/08/16 PHP
JS给超链接加确认对话框的方法
2015/02/24 Javascript
jquery控制表单输入框显示默认值的方法
2015/05/22 Javascript
js使用cookie记录用户名的方法
2015/11/26 Javascript
利用jquery实现实时更新歌词的方法
2017/01/06 Javascript
Node.js制作简单聊天室
2017/01/12 Javascript
JavaScript正则获取地址栏中参数的方法
2017/03/02 Javascript
js实现适配不同的屏幕大小
2017/04/10 Javascript
jQuery实现动态添加、删除按钮及input输入框的方法
2017/04/27 jQuery
js如何编写简单的ajax方法库
2017/08/02 Javascript
微信小程序实现两个页面传值的方法分析
2018/12/11 Javascript
Vue CLI项目 axios模块前后端交互的使用(类似ajax提交)
2019/09/01 Javascript
对Layer弹窗使用及返回数据接收的实例详解
2019/09/26 Javascript
微信浏览器下拉黑边解决方案 wScroollFix
2020/01/21 Javascript
使用JS实现动态时钟
2020/03/12 Javascript
js实现车辆管理系统
2020/08/26 Javascript
js回到页面指定位置的三种方式
2020/12/17 Javascript
python中去空格函数的用法
2014/08/21 Python
为什么入门大数据选择Python而不是Java?
2018/03/07 Python
Python实现定时备份mysql数据库并把备份数据库邮件发送
2018/03/08 Python
python pandas 组内排序、单组排序、标号的实例
2018/04/12 Python
python实现随机梯度下降法
2020/03/24 Python
Python实现的爬取百度贴吧图片功能完整示例
2019/05/10 Python
python中的协程深入理解
2019/06/10 Python
python opencv 图像拼接的实现方法
2019/06/27 Python
Python 200行代码实现一个滑动验证码过程详解
2019/07/11 Python
Pytorch卷积层手动初始化权值的实例
2019/08/17 Python
PyCharm永久激活方式(推荐)
2020/09/22 Python
Python json解析库jsonpath原理及使用示例
2020/11/25 Python
健康监测猫砂:Pretty Litter
2017/05/25 全球购物
澳大利亚家具和家居用品在线商店:Interiors Online
2018/03/05 全球购物
亿企通软件测试面试题
2012/04/10 面试题
标准化管理实施方案
2014/02/25 职场文书
springboot临时文件存储目录配置方式
2021/07/01 Java/Android
V Rising 服务器搭建图文教程
2022/06/16 Servers