您可以使用fs.readdir
或fs.readdirSync
方法。
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);
});
两种方法的区别在于第一种方法是异步的,因此您必须提供一个在读取过程结束时执行的回调函数。
第二个是同步的,它将返回文件名数组,但它将停止进一步执行代码,直到读取过程结束。
上面的答案虽然没有对目录进行递归搜索。这是我为递归搜索所做的(使用node-walk : npm install walk
)
var walk = require('walk');
var files = [];
// Walker options
var walker = walk.walk('./test', { followLinks: false });
walker.on('file', function(root, stat, next) {
// Add this file to the list of files
files.push(root + '/' + stat.name);
next();
});
walker.on('end', function() {
console.log(files);
});
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.
})