📜  Node.js fsPromises.opendir() 方法(1)

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

Node.js fsPromises.opendir() 方法

Node.js fsPromises.opendir() 方法可以打开一个目录文件并返回一个目录迭代器(DirectoryIterator)。我们可以使用目录迭代器遍历目录中的所有文件信息。

语法
fsPromises.opendir(path[, options])

参数说明:

  • path:字符串或者Buffer,表示要打开的目录路径
  • options:可选,对象类型参数,可以设置以下属性:
    • bigint:对于文件大小和文件偏移量使用 BigInt 类型。默认值:false。
    • bufferEncoding:指定 Buffer 对象的字符编码。默认值:‘utf8’。
返回值

返回一个 Promise 对象,当 Promise 解决时,返回一个目录迭代器(DirectoryIterator)对象。当 Promise 拒绝时,返回一个错误对象。

代码示例

以下代码演示如何使用 fsPromises.opendir() 方法遍历目录中的所有文件。

const fsPromises = require('fs/promises');

async function listFiles(dirPath) {
  try {
    const dir = await fsPromises.opendir(dirPath);
    for await (const dirent of dir) {
      console.log(dirent.name);
    }
  } catch(error) {
    console.log(error);
  }
}

listFiles('./myFolder');

上述代码通过调用 listFiles() 函数并传递目录路径信息进去,异步地打开目录并返回一个目录迭代器对象 dir。然后在 for await 循环中,通过遍历目录返回的迭代器对象,得到目录中所有文件的详细信息。最后,将每个文件的名称以字符串形式输出到控制台。

注意事项
  • Node.js fsPromises.opendir() 方法是 Node.js v16.0.0 新增的方法,需要 Node.js 版本大于等于 16 才能使用。
  • 如果要遍历嵌套目录中文件,则需要递归遍历所有子目录。