📜  如何使用 Node.js 显示目录中的所有文件?

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

如何使用 Node.js 显示目录中的所有文件?

目录中的文件可以使用 Node.js 中的两种方法显示,如下所述:

方法一:使用 fs.readdirSync() 方法: fs.readdirSync()是 Node.js 的文件系统模块中可用的方法。它用于读取目录的内容。它返回文件路径、缓冲区或 fs.Dirent 对象的数组。

返回的文件数组可以使用 forEach() 循环进行循环,并且可以从中显示文件名。这允许显示目录中存在的所有文件名。

方法fs.readdir()的异步变体也可用于代替此函数,该函数返回文件而不是文件本身的回调。

例子:

// Import the filesystem module
const fs = require("fs");
  
let directory_name = "example_dir";
  
// Function to get current filenames
// in directory
let filenames = fs.readdirSync(directory_name);
  
console.log("\nFilenames in directory:");
filenames.forEach((file) => {
    console.log("File:", file);
});

输出:

Filenames in directory:
File: file_a.txt
File: file_b.txt
File: file_c.txt

方法二:使用 fs.opendirSync() 方法: fs.opendirSync()方法在 Node.js 的文件系统模块中可用。它可用于读取目录的内容。它返回一个代表给定目录的fs.Dir对象。

fs.Dir对象可用于使用readSync()方法访问该目录中的文件。此方法返回一个fs.Dirent对象,其中包含目录条目的表示。此对象有一个name属性,可用于获取此fs.Dirent对象引用的文件名。该名称可以访问并显示给该用户。 readSync()方法将自动读取下一个目录条目,并在不再存在条目时返回 null。这可用于连续遍历条目并使用 while 循环获取所有文件名。

方法fs.opendir()的异步变体也可以用来代替这个函数,该函数返回一个带有fs.Dir对象而不是对象本身的回调。

例子:

// Import the filesystem module
const fs = require("fs");
  
let directory_name = "example_dir";
  
// Open the directory
let openedDir = fs.opendirSync(directory_name);
  
// Print the pathname of the directory
console.log("\nPath of the directory:", openedDir.path);
  
// Get the files present in the directory
console.log("Files Present in directory:");
  
let filesLeft = true;
while (filesLeft) {
  // Read a file as fs.Dirent object
  let fileDirent = openedDir.readSync();
  
  // If readSync() does not return null
  // print its filename
  if (fileDirent != null)
    console.log("Name:", fileDirent.name);
  
  // If the readSync() returns null
  // stop the loop
  else filesLeft = false;
}

输出:

Path of the directory: example_dir
Files Present in directory:
Name: file_a.txt
Name: file_b.txt
Name: file_c.tx