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为什么选择javascript为载体语言
Jan 13 NodeJs
PHP和NodeJs开发的应用如何共用Session
Apr 16 NodeJs
Ajax异步文件上传与NodeJS express服务端处理
Apr 01 NodeJs
nodejs入门教程一:概念与用法简介
Apr 24 NodeJs
Nodejs--post的公式详解
Apr 29 NodeJs
nodejs连接mysql数据库及基本知识点详解
Mar 20 NodeJs
nodejs前端模板引擎swig入门详解
May 15 NodeJs
Nodejs中的JWT和Session的使用
Aug 21 NodeJs
详解nodejs解压版安装和配置(带有搭建前端项目脚手架)
Dec 06 NodeJs
Nodejs中获取当前函数被调用的行数及文件名详解
Dec 12 NodeJs
nodejs dgram模块广播+组播的实现示例
Nov 04 NodeJs
浅谈Node的内存泄露问题
May 06 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
espresso double下 咖啡粉超细时 饼压力对咖啡的影响
2021/03/03 冲泡冲煮
php中关于codeigniter的xmlrpc的类在进行数据交换时的类型问题
2011/07/03 PHP
PHP版网站缓存加快打开速度的方法分享
2012/06/03 PHP
Laravel 中获取上一篇和下一篇数据
2015/07/27 PHP
详解php中反射的应用
2016/03/15 PHP
Zend Framework分页类用法详解
2016/03/22 PHP
PHP+mysql+ajax轻量级聊天室实现方法详解
2016/10/17 PHP
php7 错误处理机制修改实例分析
2020/05/25 PHP
window.onbeforeunload方法在IE下无法正常工作的解决办法
2010/01/23 Javascript
js下写一个事件队列操作函数
2010/07/19 Javascript
Js组件的一些写法
2010/09/10 Javascript
TBCompressor js代码压缩
2011/01/05 Javascript
jQuery中bind与live的用法及区别小结
2014/01/27 Javascript
Node.js中的模块机制学习笔记
2014/11/04 Javascript
javascript+canvas制作九宫格小程序
2014/12/28 Javascript
angularjs自定义ng-model标签的属性
2016/01/21 Javascript
JavaScript作用域示例详解
2016/07/07 Javascript
详解JSON1:使用TSQL查询数据和更新JSON数据
2016/11/21 Javascript
javascript稀疏数组(sparse array)和密集数组用法分析
2016/12/28 Javascript
Vue.js实现输入框绑定的实例代码
2017/08/24 Javascript
get  post jsonp三种数据交互形式实例详解
2017/08/25 Javascript
nodejs更改项目端口号的方法
2018/05/13 NodeJs
详解JS转换数值函数Number()、parseInt()、parseFloat()
2018/08/24 Javascript
在Koa.js中实现文件上传的接口功能
2019/10/08 Javascript
不刷新网页就能链接新的js文件方法总结
2020/03/01 Javascript
jQuery+css实现的点击图片放大缩小预览功能示例【图片预览 查看大图】
2020/05/29 jQuery
使用python实现链表操作
2018/01/26 Python
Python使用pymysql从MySQL数据库中读出数据的方法
2018/07/25 Python
Python下简易的单例模式详解
2019/04/08 Python
Python用Jira库来操作Jira
2020/12/28 Python
Carter’s OshKosh加拿大:购买婴幼儿服装和童装
2018/11/27 全球购物
什么是Rollback Segment
2013/04/22 面试题
应届大学生自荐信格式
2013/09/21 职场文书
最新教师自我评价分享
2013/11/12 职场文书
抽奖活动主持词
2014/03/31 职场文书
Django程序的优化技巧
2021/04/29 Python