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

先给大家介绍下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 递归拷贝、读取目录下所有文件和目录 的全部内容, 来源链接: utcz.com/z/318483.html

回到顶部