下面是关于nodejs递归拷贝、读取目录下所有文件和目录的完整攻略:
一、递归拷贝目录
要实现递归拷贝目录,需要使用Node.js中的fs
模块和path
模块。下面是实现递归拷贝目录的代码示例:
const fs = require('fs');
const path = require('path');
function copyDir(src, dest) {
// 判断src是否为目录
if (fs.statSync(src).isDirectory()) {
// 如果dest不存在,则创建目录
if (!fs.existsSync(dest)) {
fs.mkdirSync(dest, { recursive: true });
}
// 读取src中的内容
fs.readdirSync(src).forEach(file => {
// 递归地拷贝子目录或文件
copyDir(path.join(src, file), path.join(dest, file));
});
} else {
// 直接拷贝文件到目标目录下
fs.copyFileSync(src, dest);
}
}
上面的代码使用了递归函数copyDir()
,如果当前src
目录下还有子目录,则会递归调用自己,将子目录复制到目标目录下。
示例:
copyDir('./src', './dest');
上面的代码将src
目录及其子目录和文件拷贝到dest
目录下。
二、读取目录下所有文件和目录
要读取目录下所有文件和目录,同样需要使用fs
模块和path
模块。下面是实现读取目录下所有文件和目录的代码示例:
const fs = require('fs');
const path = require('path');
function readDir(dir) {
return fs.readdirSync(dir).reduce((files, file) => {
const filePath = path.join(dir, file);
const stats = fs.statSync(filePath);
// 判断是文件还是目录
if (stats.isDirectory()) {
// 递归地读取目录下所有文件和目录
files = files.concat(readDir(filePath));
} else if (stats.isFile()) {
files.push(filePath);
}
return files;
}, []);
}
上面的代码使用了递归函数readDir()
,如果当前dir
目录下还有子目录,则会递归调用自己,将子目录下的所有文件和目录加入到结果数组中。
示例:
const files = readDir('./src');
console.log(files);
上面的代码会输出./src
目录下所有的文件和目录。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:nodejs 递归拷贝、读取目录下所有文件和目录 - Python技术站