下面是如何使用 Node.js 递归实现遍历文件夹中所有文件的完整攻略。
需要用到的 Node.js 模块
首先,我们需要 Node.js 来处理文件系统的操作,需要两个核心模块:
fs
模块 :用于访问文件系统。path
模块:用于处理文件路径的工具。
因此,我们在开始之前需要先引入这两个模块。
const fs = require('fs');
const path = require('path');
使用递归遍历文件夹
接下来,我们将递归的方式遍历文件夹中的所有文件。过程大概如下:
- 检查给定的路径是否是一个文件还是一个文件夹。
- 如果是一个文件夹,遍历它的内容并递归的调用2步骤。
- 如果是一个文件,打印文件名。
下面是示例代码:
function readDir(dir) {
const files = fs.readdirSync(dir); // 读取文件夹中的所有内容
files.forEach(file => {
const filePath = path.join(dir, file); // 获取文件的完整路径
const stat = fs.statSync(filePath); // 判断文件是否是一个文件夹
if (stat.isDirectory()) {
readDir(filePath); // 如果是一个文件夹,继续递归遍历子文件夹
} else {
console.log(filePath); // 如果是一个文件,打印出文件名
}
});
}
readDir('./'); // 从当前目录开始遍历
在上面的代码中,通过 fs.readdirSync(dir)
读取了指定路径(dir)下的所有文件和子目录。在 forEach()
循环内部,我们使用 path.join()
方法获取文件的完整路径,并使用 fs.statSync()
方法判断文件类型。如果它是一个文件夹,则递归遍历它的内容,否则打印出文件名。
示例1:使用异步函数遍历
我们还可以使用异步方法来遍历文件夹内容,以防止阻塞 I/O 操作。下面代码展示如何使用异步文件系统 API 列出文件夹中的所有文件。
async function readDirAsync(dir) {
const files = await fs.promises.readdir(dir); // 异步读取文件夹中的所有内容
for (const file of files) {
const filePath = path.join(dir, file);
const stat = await fs.promises.stat(filePath); // 异步的检查文件的类型
if (stat.isDirectory()) {
await readDirAsync(filePath); // 如果是一个文件夹,继续递归遍历子文件夹
} else {
console.log(filePath); // 如果是一个文件,打印出文件名
}
}
}
readDirAsync('./'); // 从当前目录开始遍历
在这个示例中,我们使用了异步方法 fs.promises.readdir()
和 fs.promises.stat()
来异步地读取文件夹内容和检查文件的类型。每当遇到子文件夹时,会委托 readDirAsync()
异步执行。
示例2:筛选出特定类型的文件
在实际场景中,我们通常需要筛选出指定文件类型的文件。例如,我们可能只对一组特定类型的文件感兴趣,如 .js
文件。我们可以通过在代码示例1中添加文件类型检查的语句来实现这一点。
async function readDirAsync(dir) {
const files = await fs.promises.readdir(dir);
for (const file of files) {
const filePath = path.join(dir, file);
const stat = await fs.promises.stat(filePath);
if (stat.isDirectory()) {
await readDirAsync(filePath);
} else {
const fileExt = path.extname(filePath)
if (fileExt === '.js') {
console.log(filePath);
}
}
}
}
readDirAsync('./');
在上面的代码中,我们使用 path.extname()
方法获取文件的扩展名,并将扩展名与 .js
进行比较。如果两者相等,则打印出文件路径。
这就是如何使用 Node.js 递归实现遍历文件夹中所有文件的完整攻略。希望这些示例对您有所帮助!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Node.js 使用递归实现遍历文件夹中所有文件 - Python技术站