可以通过以下步骤实现:
const fs = require('fs');
const path = require('path');
async function searchDirectory(directory) {
try {
const files = await fs.promises.readdir(directory); // 读取目录中的文件和子目录
const results = await Promise.all(files.map(async (file) => {
const filePath = path.join(directory, file); // 获取文件的完整路径
const stats = await fs.promises.stat(filePath); // 获取文件的状态信息
if (stats.isDirectory()) {
return searchDirectory(filePath); // 如果是目录,则递归搜索子目录
} else {
return filePath; // 如果是文件,则返回文件路径
}
}));
return results.flat(); // 将多维数组扁平化为一维数组
} catch (error) {
console.error('Error searching directory:', error);
return [];
}
}
const directoryPath = '/path/to/directory'; // 替换为实际的目录路径
searchDirectory(directoryPath)
.then((result) => {
console.log('Final result:', result);
})
.catch((error) => {
console.error('Error:', error);
});
这段代码使用NodeJS的fs模块来读取目录中的文件和子目录,并通过递归异步方式搜索目录。对于每个文件,它会判断是否是目录,如果是目录,则递归搜索子目录;如果是文件,则返回文件路径。最终,所有文件路径将被返回为一个数组。
这个功能可以在许多场景中使用,例如构建文件索引、批量处理文件等。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云