Node.JS 循环递归复制文件夹目录及其子文件夹下的所有文件

发布时间 - 2026-01-11 03:18:24    点击率:

实现代码一:

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
})

文章到此结束,希望有帮助的朋友多多支持。


# Node.JS  # 循环  # 递归  # 复制文件夹  # 在Node.js中实现文件复制的方法和实例  # Nodejs 复制文件/文件夹的方法  # Nodejs如何复制文件  # Node.js复制文件的方法示例  # nodejs文件夹深层复制功能  # 纯异步nodejs文件夹(目录)复制功能  # node删除、复制文件或文件夹示例代码  # node.js文件的复制、创建文件夹等相关操作  # 到此  # 回调  # 为空  # createReadStream  # error  # rs  # tarPath  # cb  # read  # amp  # log  # err  # console  # srcPath  # js  # var  # brush  # pre  # class  # copyFile 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】  Laravel如何为API编写文档_Laravel API文档生成与维护方法  香港服务器选型指南:免备案配置与高效建站方案解析  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  如何构建满足综合性能需求的优质建站方案?  百度浏览器如何管理插件 百度浏览器插件管理方法  高性能网站服务器部署指南:稳定运行与安全配置优化方案  Laravel Debugbar怎么安装_Laravel调试工具栏配置指南  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  Laravel如何实现用户密码重置功能?(完整流程代码)  中山网站推广排名,中山信息港登录入口?  Win11怎么设置默认图片查看器_Windows11照片应用关联设置  网站图片在线制作软件,怎么在图片上做链接?  如何在阿里云通过域名搭建网站?  Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理  详解jQuery中的事件  JavaScript Ajax实现异步通信  如何在万网ECS上快速搭建专属网站?  laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法  Laravel Blade模板引擎语法_Laravel Blade布局继承用法  INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】  nodejs redis 发布订阅机制封装实现方法及实例代码  如何破解联通资金短缺导致的基站建设难题?  如何快速选择适合个人网站的云服务器配置?  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  Internet Explorer官网直接进入 IE浏览器在线体验版网址  如何快速搭建高效简练网站?  JS中对数组元素进行增删改移的方法总结  动图在线制作网站有哪些,滑动动图图集怎么做?  悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】  Laravel如何与Docker(Sail)协同开发?(环境搭建教程)  如何快速查询域名建站关键信息?  使用spring连接及操作mongodb3.0实例  Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面  iOS正则表达式验证手机号、邮箱、身份证号等  北京网站制作的公司有哪些,北京白云观官方网站?  网站制作免费,什么网站能看正片电影?  韩国服务器如何优化跨境访问实现高效连接?  微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】  如何在宝塔面板中修改默认建站目录?  Laravel Fortify是什么,和Jetstream有什么关系  Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权  Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析  如何在阿里云高效完成企业建站全流程?  Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件  清除minerd进程的简单方法  如何在IIS中新建站点并配置端口与IP地址?  如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)  香港服务器网站推广:SEO优化与外贸独立站搭建策略  Laravel如何配置.env文件管理环境变量_Laravel环境变量使用与安全管理