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 Express框架中处理404页面一个方式
May 28 NodeJs
NodeJS测试框架mocha入门教程
Mar 28 NodeJs
nodejs和C语言插入mysql数据库乱码问题的解决方法
Apr 14 NodeJs
NodeJs安装npm包一直失败的解决方法
Apr 28 NodeJs
CentOS 安装NodeJS V8.0.0的方法
Jun 15 NodeJs
详解nodejs实现本地上传图片并预览功能(express4.0+)
Jun 28 NodeJs
详解IWinter 一个路由转控制器的 Nodejs 库
Nov 15 NodeJs
修改Nodejs内置的npm默认配置路径方法
May 13 NodeJs
基于Nodejs的Tcp封包和解包的理解
Sep 19 NodeJs
nodejs中request库使用HTTPS代理的方法
Apr 30 NodeJs
nodejs语言实现验证码生成功能的示例代码
Oct 13 NodeJs
nodejs利用readline提示输入内容实例代码
Jul 15 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文件向另一个地址post数据,不用表单和隐藏的变量的
2007/03/06 PHP
Zend studio for eclipse中使php可以调用mysql相关函数的设置方法
2008/10/13 PHP
php addslashes 利用递归实现使用反斜线引用字符串
2013/08/05 PHP
初学Javascript的一些总结
2008/11/03 Javascript
jquery实现的横向二级导航效果代码
2015/08/26 Javascript
JS实现漂亮的窗口拖拽效果(可改变大小、最大化、最小化、关闭)
2015/10/10 Javascript
JavaScript如何禁止Backspace键
2015/12/02 Javascript
jQuery使用中可能被XSS攻击的一些危险环节提醒
2016/05/24 Javascript
jQuery动态生成Bootstrap表格
2016/11/01 Javascript
使用JavaScript获取URL中的参数(两种方法)
2016/11/16 Javascript
jQuery树插件zTree使用方法详解
2017/05/02 jQuery
Vue的移动端多图上传插件vue-easy-uploader的示例代码
2017/11/27 Javascript
实例详解vue.js浅度监听和深度监听及watch用法
2018/08/16 Javascript
微信小程序实现时间戳格式转换
2020/07/20 Javascript
Webpack的Loader和Plugin的区别
2020/11/09 Javascript
基于Cesium绘制抛物弧线
2020/11/18 Javascript
[02:38]DOTA2 夜魇暗潮2020活动介绍官方视频
2020/11/04 DOTA
python获取元素在数组中索引号的方法
2015/07/15 Python
Python字符串处理实例详解
2017/05/18 Python
对PyTorch torch.stack的实例讲解
2018/07/30 Python
使用Python抓取豆瓣影评数据的方法
2018/10/17 Python
Python中的单下划线和双下划线使用场景详解
2019/09/09 Python
Python scrapy增量爬取实例及实现过程解析
2019/12/24 Python
Python IDE环境之 新版Pycharm安装详细教程
2020/03/05 Python
is_file和file_exists效率比较
2021/03/14 PHP
javascript实现用户必须勾选协议实例讲解
2021/03/24 Javascript
大学生关于奋斗的演讲稿
2014/01/09 职场文书
微型企业创业投资计划书
2014/01/10 职场文书
高中体育教学反思
2014/01/24 职场文书
公交公司毕业生求职信
2014/02/15 职场文书
整改报告怎么写
2014/11/06 职场文书
旷课检讨书范文
2015/01/27 职场文书
建议书格式
2015/02/04 职场文书
加入学生会自荐书
2015/03/05 职场文书
建国大业电影观后感
2015/06/01 职场文书
Go调用Rust方法及外部函数接口前置
2022/06/14 Golang