我问this question for PHP a long time ago 。这同样适用于 Node.js,下面的代码在循环中使用时似乎有点慢 - 有没有办法在没有插件或 React.js 等的情况下用纯 Node.js vanilla JavaScript 编写此代码?
const dirname = 'cdn-assets/'
fs.readdir(dirname, function(err, files) {
if (err) {
// some sort of error
} else {
if (!files.length) {
// directory appears to be empty
}
}
});
另外,我可以写一个进一步的条件来检查吗:
if(directory_has_these_files('.js, .css, .jpg, .svg, .mp4'))
最佳答案
所以如果你这样做
fs.readdir('/path/to/empty_dir', (data, err) => console.log(data, '.....', err))
你会看到结果是:
null '.....' []
所以你的代码可以简化为
fs.readdir(dirname, (err, files) => {
if (err && !files) {
console.error(err)
}
console.info('the files --> ', files)
let regexp = RegExp('.jpeg|.doc|.png|.zip', 'gi')
for(result in files) {
if(regexp.test(files[result])) {
console.log('I have the following', files[result])
}
}});
但是......
我们想要这种快速、现代和高效的方式,不是吗?!
所以这更好:
fs.readdir(dirname, (err, files) => {
if (err && !files) {
console.error(err)
}
let regexp = RegExp('.jpeg|.doc|.png|.zip', 'gi');
files.filter(
file => file.match(regexp)
).map(
result => console.log('I have the following',result)
);
});
在目录上使用 map 的优点之一是可以保证顺序的保留,而且看起来也更干净。
Map 是内置的 iterable — Object 不是,这并不是说 Map 是 Object 的替代品,两者都有用例。那是另一个故事了。
关于javascript - 如何使用 Node.js 检查目录是否为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50791157/