如何使用Node.js检查目录是否为空?

时间:2018-06-11 05:49:13

标签: javascript node.js directory cdn fs

我问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'))

1 个答案:

答案 0 :(得分:1)

因此,如果您这样做

fs.readdir('/path/to/empty_dir', (data, err) => console.log(data, '.....', err)) 

您会看到结果是:

  

空'.....'[]

因此您的代码可以简化为

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是Object的替代品,两者都有用例。那是另一个故事。