📜  Node.js fs.opendir() 方法

📅  最后修改于: 2022-05-13 01:56:47.989000             🧑  作者: Mango

Node.js fs.opendir() 方法

fs.opendir() 方法用于异步打开文件系统中的目录。它创建一个用于表示目录的 fs.Dir 对象。该对象包含可用于访问目录的各种方法。

句法:

fs.opendir( path[, options], callback )

参数:此方法接受三个参数,如上所述,如下所述:

  • path:它是一个String、Buffer或URL,表示必须打开的目录的路径。
  • options:它是一个字符串或对象,可用于指定将影响输出的可选参数。它有两个可选参数:
    • encoding:它是一个字符串,用于指定打开目录时和后续读取操作的路径的编码。默认值为“utf8”。
    • bufferSize:它是一个数字,指定在读取目录时在内部缓冲的目录条目数。更高的值意味着更高的性能,但会导致更高的内存使用率。默认值为“32”。
  • 回调:它是一个在方法执行时将被调用的函数。
    • err:如果方法失败会抛出一个错误。
    • dir:是代表目录的方法创建的fs.Dir对象。

下面的示例说明了 Node.js 中的fs.opendir() 方法

示例 1:

// Node.js program to demonstrate the
// fs.opendir() method
  
// Import the filesystem module
const fs = require('fs');
  
// Open the directory
console.log("Opening the directory");
fs.opendir(
    
  // Path of the directory
  "example_dir",
  
  // Options for modifying the operation
  { encoding: "utf8", bufferSize: 64 },
  
  // Callback with the error and returned
  // directory
  (err, dir) => {
    if (err) console.log("Error:", err);
    else {
      // Print the pathname of the directory
      console.log("Path of the directory:", dir.path);
  
      // Close the directory
      console.log("Closing the directory");
      dir.closeSync();
    }
  }
);

输出:

Opening the directory
Path of the directory: example_dir
Closing the directory

示例 2:

// Node.js program to demonstrate the
// fs.opendir() method
  
// Import the filesystem module
const fs = require('fs');
  
// Function to get current filenames
// in directory
filenames = fs.readdirSync("example_dir");
  
console.log("\nCurrent filenames in directory:");
filenames.forEach((file) => {
  console.log(file);
});
  
// Open the directory
fs.opendir("example_dir", (err, dir) => {
  if (err) console.log("Error:", err);
  else {
    // Print the pathname of the directory
    console.log("\nPath of the directory:", dir.path);
  
    // Read the files in the directory
    // as fs.Dirent objects
    console.log("First Dirent:", dir.readSync());
    console.log("Next Dirent:", dir.readSync());
    console.log("Next Dirent:", dir.readSync());
  }
});

输出:

Current filenames in directory:
file_a.txt
file_b.txt

Path of the directory: example_dir
First Dirent: Dirent { name: 'file_a.txt', [Symbol(type)]: 1 }
Next Dirent: Dirent { name: 'file_b.txt', [Symbol(type)]: 1 }
Next Dirent: null

参考: https://nodejs.org/api/fs.html#fs_fs_opendir_path_options_callback