【问题标题】:How can I use Node.js to check if a directory is empty?如何使用 Node.js 检查目录是否为空?
【发布时间】:2018-11-20 07:35:09
【问题描述】:

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

【问题讨论】:

    标签: javascript node.js directory cdn fs


    【解决方案1】:

    如果你这样做

    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 是内置可迭代的 — Object 不是,这并不是说 Map 是 Object 的替代品,两者都有用例。那是另一个故事。

    【讨论】:

      猜你喜欢
      • 2011-11-21
      • 2018-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-01
      相关资源
      最近更新 更多