📌  相关文章
📜  Node.js fs.promise.readdir() 方法(1)

📅  最后修改于: 2023-12-03 15:17:54.459000             🧑  作者: Mango

Node.js fs.promise.readdir() 方法

简介

Node.js fs.promise.readdir() 方法是 fs 模块中的一个异步方法,用于读取一个目录的内容并返回一个包含所有文件名和子目录名的数组。

该方法与 Node.js fs.readdir() 方法相似,但是它返回一个 Promise 对象,使得开发者可以更容易地使用 async/await 语法进行异步编程。

语法
fs.promises.readdir(path[, options])

参数说明:

  • path:字符串类型,表示要读取的目录路径。
  • options:可选参数,一个以对象形式传入的选项对象。具体选项包括:
    • encoding:指定返回结果的编码格式,默认为 utf-8
    • withFileTypes:如果设置为 true,则返回结果将包含文件列表条目(即 fs.Dirent 对象)。默认为 false
返回值

Node.js fs.promise.readdir() 方法返回一个 promise 对象,当读取目录操作完成后,promise 对象将被 resolve 并返回一个包含目录下文件和子目录名称的数组。

如果操作失败,则该 promise 对象将被 reject。

使用示例

以下示例演示了读取一个目录下所有文件名的简单用法:

const fs = require('fs').promises;
async function getFilesInDir(dirPath) {
    try {
        const files = await fs.readdir(dirPath);
        console.log(`Read files in directory ${dirPath}:\n`, files);
    } catch (err) {
        console.error(`Failed to read files in directory ${dirPath}:`, err);
    }
}

上述代码中,我们首先引入 Node.js fs 模块的 promise 对象,然后定义了一个异步函数 getFilesInDir(),该函数接受一个目录路径参数 dirPath。在函数体内,我们使用 await fs.readdir(dirPath) 读取目录并将所有文件和子目录名称存储到 files 变量中,并使用 console.log() 函数输出读取到的结果。

如果读取操作失败,则该方法将抛出错误并打印错误信息到控制台。

另外,如果要使用 withFileTypes 选项,可以将其传入 fs.promises.readdir() 方法的 options 参数中:

const fs = require('fs').promises;
async function getFilesWithTypes(dirPath) {
    try {
        const files = await fs.readdir(dirPath, {withFileTypes: true});
        console.log(`Read files with types in directory ${dirPath}:\n`, files);
    } catch (err) {
        console.error(`Failed to read files with types in directory ${dirPath}:`, err);
    }
}

上述代码中,我们将 withFileTypes 选项设置为 true,这将使 fs.promises.readdir() 方法在返回结果时包含 fs.Dirent 对象。

小结

Node.js fs.promise.readdir() 方法是 fs 模块提供的一个功能强大的异步方法,可以方便地读取指定目录下文件和子目录名称,并支持使用 Promise 和 async/await 语法进行异步编程。开发者可以在编写 Node.js 应用程序时广泛使用该方法,以实现更高效和高质量的开发。