如何获取 Node.js 目录中存在的所有文件的名称列表?

2022-08-29 22:01:34

我正在尝试使用Node.js获取目录中存在的所有文件的名称列表。我想要一个文件名数组的输出。我该怎么做?


答案 1

您可以使用 fs.readdirfs.readdirSync 方法。 包含在 Node.js 核心中,因此无需安装任何内容。fs

fs.readdir

const testFolder = './tests/';
const fs = require('fs');

fs.readdir(testFolder, (err, files) => {
  files.forEach(file => {
    console.log(file);
  });
});

fs.readdirSync

const testFolder = './tests/';
const fs = require('fs');

fs.readdirSync(testFolder).forEach(file => {
  console.log(file);
});

这两种方法之间的区别在于,第一个是异步的,因此您必须提供一个回调函数,该函数将在读取过程结束时执行。

第二个是同步的,它将返回文件名数组,但它将停止代码的任何进一步执行,直到读取过程结束。


答案 2

IMO执行此类任务的最方便方法是使用glob工具。下面是 node.js 的 glob 包。安装方式

npm install glob

然后使用通配符匹配文件名(示例取自包的网站)

var glob = require("glob")

// options is optional
glob("**/*.js", options, function (er, files) {
  // files is an array of filenames.
  // If the `nonull` option is set, and nothing
  // was found, then files is ["**/*.js"]
  // er is an error object or null.
})

如果您计划使用 globby,这里有一个示例来查找当前文件夹下的任何 xml 文件

var globby = require('globby');

const paths = await globby("**/*.xml");