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

标签 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'))

最佳答案

所以如果你这样做

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/

相关文章:

javascript - 表单提交后的通知

javascript - 修复 <div contenteditable ="true"> 的 innerHTML 时的光标位置

javascript - ES6 类变量超出范围?

javascript - 在哈巴狗中使用 bool 局部变量

java - Android FTP 更改目录失败

Oracle RAC——创建目录

java - 使用android从web目录读取文件

javascript - 强制 mod_write 不重写任何以 .css 或 .js 结尾的内容

javascript - 单击链接时将颜色更改为#fff

javascript - app.oauth.grant 不是函数 (oauth2-server)