欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-04-09 12:33:09
先给大家介绍下nodejs 递归拷贝目录下所有文件和目录,具体代码如下所示: var fs=require('fs'); var copy=function(s...

先给大家介绍下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 递归拷贝、读取目录下所有文件和目录,希望对大家有所帮助