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 相关文章推荐
PHPStorm 2020.1 调试 Nodejs的多种方法详解
Sep 17 NodeJs
nodejs npm package.json中文文档
Sep 04 NodeJs
Nodejs实现的一个简单udp广播服务器、客户端
Sep 25 NodeJs
Nodejs实现的一个静态服务器实例
Dec 06 NodeJs
nodejs实现获取某宝商品分类
May 28 NodeJs
nodejs 实现钉钉ISV接入的加密解密方法
Jan 16 NodeJs
Nodejs搭建wss服务器教程
May 24 NodeJs
Nodejs之TCP服务端与客户端聊天程序详解
Jul 07 NodeJs
nodejs 搭建简易服务器的图文教程(推荐)
Jul 18 NodeJs
Nodejs中的JWT和Session的使用
Aug 21 NodeJs
基于Nodejs的Tcp封包和解包的理解
Sep 19 NodeJs
如何利用nodejs实现命令行游戏
Nov 24 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
Yii全局函数用法示例
2017/01/22 PHP
PHP面向对象程序设计模拟一般面向对象语言中的方法重载(overload)示例
2019/06/13 PHP
通过下拉框的值来确定输入框是否可以为空的代码
2011/10/18 Javascript
JS对象与JSON格式数据相互转换
2012/02/20 Javascript
js和jquery对dom节点的操作(创建/追加)
2013/04/21 Javascript
javascript处理表单示例(javascript提交表单)
2014/04/28 Javascript
JS实现的网页倒计时数字时钟效果
2015/03/02 Javascript
使用AngularJS来实现HTML页面嵌套的方法
2015/06/17 Javascript
Vue中之nextTick函数源码分析详解
2017/10/17 Javascript
用JavaScript做简易的购物车的代码示例
2017/10/20 Javascript
尝试自己动手用react来写一个分页组件(小结)
2018/02/09 Javascript
解决VUEX兼容IE上的报错问题
2018/03/01 Javascript
vue使用ajax获取后台数据进行显示的示例
2018/08/09 Javascript
JSON的parse()方法介绍
2019/01/31 Javascript
[30:51]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#1Liquid VS MVP.Phx第一局
2016/03/04 DOTA
[02:51]2018年度DOTA2最佳中单位选手-完美盛典
2018/12/17 DOTA
Python随机生成彩票号码的方法
2015/03/05 Python
requests和lxml实现爬虫的方法
2017/06/11 Python
python 借助numpy保存数据为csv格式的实现方法
2018/07/04 Python
Python中的CSV文件使用"with"语句的方式详解
2018/10/16 Python
pygame游戏之旅 添加游戏暂停功能
2018/11/21 Python
python字符串判断密码强弱
2020/03/18 Python
python开发实例之Python的Twisted框架中Deferred对象的详细用法与实例
2020/03/19 Python
Python 下载Bing壁纸的示例
2020/09/29 Python
python在linux环境下安装skimage的示例代码
2020/10/14 Python
经济实惠的豪华背包和行李袋:Packs Project
2018/10/17 全球购物
英国领先品牌手动工具和电动工具供应商:Tooled Up
2018/11/24 全球购物
党员党性分析材料
2014/02/17 职场文书
爱耳日活动总结
2014/04/30 职场文书
幼儿园运动会口号
2014/06/07 职场文书
工地门卫岗位职责范本
2014/07/01 职场文书
会计专业自荐信范文
2015/03/05 职场文书
2015年幼儿园学前班工作总结
2015/05/18 职场文书
秋收起义观后感
2015/06/11 职场文书
鸡毛信观后感
2015/06/11 职场文书
2016年小学生教师节广播稿
2015/12/18 职场文书