当前位置: 移动技术网 > IT编程>脚本编程>NodeJs > nodejs 递归拷贝、读取目录下所有文件和目录

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

2019年09月06日  | 移动技术网IT编程  | 我要评论

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网