📅  最后修改于: 2023-12-03 15:03:16.157000             🧑  作者: Mango
在Node.js中,获取文件系统中所有文件和目录的列表是很常见的需求。使用递归函数可以轻松地处理这个任务。
const fs = require('fs');
const path = require('path');
function getFiles(dir, fileList = []) {
const files = fs.readdirSync(dir);
files.forEach(file => {
const filePath = path.join(dir, file);
if (fs.statSync(filePath).isDirectory()) {
getFiles(filePath, fileList);
} else {
fileList.push(filePath);
}
});
return fileList;
}
该函数使用Node.js内置模块“fs”和“path”,以同步方式递归所有文件和目录。对于每个文件夹,它将递归调用自己,直到找到所有嵌套文件夹内的文件,并将结果添加到数组中。对于每个文件,它将其路径添加到文件列表中。
const dir = '/path/to/directory';
const fileList = getFiles(dir);
console.log(fileList);
只需将目录路径传递给递归函数,并将返回的文件列表存储在一个变量中即可。
当目录很大时,使用递归函数可能会导致性能问题。因此,应该使用异步非阻塞代码来实现该功能。使用“fs.readdir”和“fs.stat”函数异步地获取目录和文件的信息可能更好。
如果需要过滤不想要的文件类型,可以在递归函数中添加一个判断条件来实现。例如,只收集PDF文件路径:
if (file.endsWith('.pdf')) {
fileList.push(filePath);
}
使用递归函数可以轻松地获取文件系统中的所有文件和目录。此函数可帮助Node.js开发人员快速检查他们的项目中的文件结构,并根据需要对其进行操作。