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 相关文章推荐
借用Google的Javascript API Loader来加速你的网站
Jan 28 Javascript
jquery创建div 实现代码
Apr 27 Javascript
面向对象的javascript(笔记)
Oct 06 Javascript
原生JavaScript制作微博发布面板效果
Mar 11 Javascript
Javascript实现前端简单的路由实例
Sep 11 Javascript
JavaScript中闭包的详解
Apr 01 Javascript
vue2.0中goods选购栏滚动算法的实现代码
May 17 Javascript
jQuery代码优化方法总结
Jan 29 jQuery
如何在Angular应用中创建包含组件方法示例
Mar 23 Javascript
vue router动态路由设置参数可选问题
Aug 21 Javascript
解决layer.prompt无效的问题
Sep 24 Javascript
微信小程序弹窗禁止页面滚动的实现代码
Dec 30 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
提问的智慧
2006/10/09 PHP
推荐一本PHP程序猿都应该拜读的书
2014/12/31 PHP
WordPress中用于获取搜索表单的PHP函数使用解析
2016/01/05 PHP
php使用flock阻塞写入文件和非阻塞写入文件的实例讲解
2017/07/10 PHP
PHP explode()函数用法讲解
2019/02/15 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
2019/12/30 PHP
showModelessDialog()使用详解
2006/09/07 Javascript
Jquery拖拽并简单保存的实现代码
2010/11/28 Javascript
Vuejs第一篇之入门教程详解(单向绑定、双向绑定、列表渲染、响应函数)
2016/09/09 Javascript
如何处理JSON中的特殊字符
2016/11/30 Javascript
温故知新——JavaScript中的字符串连接问题最全总结(推荐)
2017/08/21 Javascript
浅谈JavaScript的innerWidth与innerHeight
2017/10/12 Javascript
Node.js实现发送邮件功能
2017/11/06 Javascript
Vue CLI3 如何支持less的方法示例
2018/08/29 Javascript
js实现简单掷骰子效果
2019/10/24 Javascript
[47:31]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第一场 12.12
2020/12/16 DOTA
Python使用django获取用户IP地址的方法
2015/05/11 Python
Python计算字符宽度的方法
2016/06/14 Python
利用Python批量压缩png方法实例(支持过滤个别文件与文件夹)
2017/07/30 Python
python dataframe 输出结果整行显示的方法
2018/06/14 Python
Python+OpenCV实现图像融合的原理及代码
2018/12/03 Python
Python3爬虫中Selenium的用法详解
2020/07/10 Python
Django创建一个后台的基本步骤记录
2020/10/02 Python
python3字符串输出常见面试题总结
2020/12/01 Python
Selenium获取登录Cookies并添加Cookies自动登录的方法
2020/12/04 Python
比利时网上药店: Drogisterij.net
2017/03/17 全球购物
Omio俄罗斯:一次搜索公共汽车、火车和飞机的机票
2018/11/17 全球购物
JSF面试题:Jsf中的核心类用那些?有什么作用?LiftCycle六大生命周期是什么?
2014/07/17 面试题
银行办公室岗位职责
2014/03/10 职场文书
交通志愿者活动总结
2014/06/27 职场文书
乡镇党员干部群众路线对照检查材料思想汇报
2014/09/28 职场文书
村党的群众路线教育实践活动总结材料
2014/10/31 职场文书
世界卫生日宣传活动总结
2015/02/09 职场文书
2015年教师节演讲稿范文
2015/03/19 职场文书
2016年中学植树节活动总结
2016/03/16 职场文书
教你快速开启Apache SkyWalking的自监控
2021/04/25 Servers