nodejs 递归拷贝、读取目录下所有文件和目录


Posted in NodeJs onJuly 18, 2019

先给大家介绍下nodejs 递归拷贝目录下所有文件和目录,具体代码如下所示:

var fs=require('fs');
var copy=function(src,dst){
  let paths = fs.readdirSync(src); //同步读取当前目录
  paths.forEach(function(path){
    var _src=src+'/'+path;
    var _dst=dst+'/'+path;
    fs.stat(_src,function(err,stats){ //stats 该对象 包含文件属性
      if(err)throw err;
      if(stats.isFile()){ //如果是个文件则拷贝
        let readable=fs.createReadStream(_src);//创建读取流
        let writable=fs.createWriteStream(_dst);//创建写入流
        readable.pipe(writable);
      }else if(stats.isDirectory()){ //是目录则 递归
        checkDirectory(_src,_dst,copy);
      }
    });
  });
}
var checkDirectory=function(src,dst,callback){
  fs.access(dst, fs.constants.F_OK, (err) => {
    if(err){
      fs.mkdirSync(dst);
      callback(src,dst);
    }else{
      callback(src,dst);
    }
   });
};
const  SOURCES_DIRECTORY = 'd:commonPrefab'; //源目录
checkDirectory(SOURCES_DIRECTORY,__dirname,copy);

ps:下面看下Nodejs递归读取目录下的所有文件

递归读取当前目录下的所有文件。

var fs = require('fs');
var path = require('path');
var exec = require('child_process').exec;
function readFileList(dir, filesList = []) {
  const files = fs.readdirSync(dir);
  console.log(files);
  files.forEach((item, index) => {
    var fullPath = path.join(dir, item);
    const stat = fs.statSync(fullPath);
    if (stat.isDirectory()) {   
      readFileList(path.join(dir, item), filesList); //递归读取文件
    } else {        
      filesList.push(fullPath);           
    }    
  });
  return filesList;
}
var filesList = [];
readFileList(__dirname,filesList);
console.log(filesList);

总结

以上所述是小编给大家介绍的nodejs 递归拷贝、读取目录下所有文件和目录,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

NodeJs 相关文章推荐
NodeJS的模块写法入门(实例代码)
Mar 07 NodeJs
使用upstart把nodejs应用封装为系统服务实例
Jun 01 NodeJs
我的NodeJs学习小结(一)
Jul 06 NodeJs
提高NodeJS中SSL服务的性能
Jul 15 NodeJs
nodejs开发环境配置与使用
Nov 17 NodeJs
Nodejs读取文件时相对路径的正确写法(使用fs模块)
Apr 27 NodeJs
详解nodeJS之二进制buffer对象
Jun 03 NodeJs
详解使用vscode+es6写nodejs服务端调试配置
Sep 21 NodeJs
nodejs中安装ghost出错的原因及解决方法
Oct 23 NodeJs
nodejs图片处理工具gm用法小结
Dec 12 NodeJs
nodejs基础之buffer缓冲区用法分析
Dec 26 NodeJs
详解NodeJs项目 CentOs linux服务器线上部署
Sep 16 NodeJs
nodejs二进制与Buffer的介绍与使用
Jul 11 #NodeJs
nodejs中各种加密算法的实现详解
Jul 11 #NodeJs
监控Nodejs的性能实例代码
Jul 02 #NodeJs
搭建一个nodejs脚手架的方法步骤
Jun 28 #NodeJs
独立部署小程序基于nodejs的服务器过程详解
Jun 24 #NodeJs
nodejs实现获取本地文件夹下图片信息功能示例
Jun 22 #NodeJs
NodeJs 模仿SIP话机注册的方法
Jun 21 #NodeJs
You might like
PHP获取类中常量,属性,及方法列表的方法
2009/04/09 PHP
php实现快速排序法函数代码
2012/08/27 PHP
ThinkPHP之用户注册登录留言完整实例
2014/07/22 PHP
PHP开发框架laravel安装与配置教程
2015/03/13 PHP
PHP类型约束用法示例
2016/09/28 PHP
PHP实现chrome表单请求数据转换为接口使用的json数据
2021/03/04 PHP
表单填写时用回车代替TAB的实现方法
2007/10/09 Javascript
Firefox+FireBug使JQuery的学习更加轻松愉快
2010/01/01 Javascript
Javascript图像处理—平滑处理实现原理
2012/12/28 Javascript
浅谈JavaScript中指针和地址
2015/07/26 Javascript
vuex中使用对象展开运算符的示例
2017/09/25 Javascript
js+html5生成自动排列对话框实例
2017/10/09 Javascript
微信小程序实现的绘制table表格功能示例
2019/04/26 Javascript
微信小程序 导入图标实现过程详解
2019/10/11 Javascript
[06:24]DOTA2 2015国际邀请赛中国区预选赛第二日TOP10
2015/05/27 DOTA
Python中的数据对象持久化存储模块pickle的使用示例
2016/03/03 Python
Python判断变量是否为Json格式的字符串示例
2017/05/03 Python
Python学习之用pygal画世界地图实例
2017/12/07 Python
python机器学习理论与实战(二)决策树
2018/01/19 Python
使用pandas批量处理矢量化字符串的实例讲解
2018/07/10 Python
Windows系统Python直接调用C++ DLL的方法
2019/08/01 Python
python自动保存百度盘资源到百度盘中的实例代码
2019/08/26 Python
Python整数与Numpy数据溢出问题解决
2019/09/11 Python
导入tensorflow时报错:cannot import name 'abs'的解决
2019/10/10 Python
wxPython绘图模块wxPyPlot实现数据可视化
2019/11/19 Python
PyCharm上安装Package的实现(以pandas为例)
2020/09/18 Python
使用Python解析Chrome浏览器书签的示例
2020/11/13 Python
jupyter notebook指定启动目录的方法
2021/03/02 Python
CSS3 实现的火焰动画
2020/12/07 HTML / CSS
HTML5中判断横屏竖屏的方法(移动端)
2016/08/04 HTML / CSS
捷克移动配件网上商店:ProMobily.cz
2019/03/15 全球购物
澳大利亚珠宝商:Shiels
2019/10/06 全球购物
加拿大探亲邀请信
2014/01/28 职场文书
社区母亲节活动记录
2014/03/06 职场文书
科长竞聘演讲稿
2014/05/16 职场文书
【DOTA2】半决赛强强对话~ PSG LGD vs EHOME - DPC 2022 CN REGIONAL FINALS WINTER
2022/04/02 DOTA