如何获取 Node.js 目录中存在的所有文件的名称列表?
2022-08-29 22:01:34
我正在尝试使用Node.js获取目录中存在的所有文件的名称列表。我想要一个文件名数组的输出。我该怎么做?
我正在尝试使用Node.js获取目录中存在的所有文件的名称列表。我想要一个文件名数组的输出。我该怎么做?
您可以使用 fs.readdir
或 fs.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);
});
这两种方法之间的区别在于,第一个是异步的,因此您必须提供一个回调函数,该函数将在读取过程结束时执行。
第二个是同步的,它将返回文件名数组,但它将停止代码的任何进一步执行,直到读取过程结束。
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");