nodejs如何判断目录是否为空目录

how to determine whether the directory is empty directory with nodejs

我已经搜索了 Nodejs 文档,但是没有找到相关的 API。

所以我写了如下代码判断目录是否为空目录

var fs = require('fs');

function isEmptyDir(dirnane){
    try{
        fs.rmdirSync(dirname)
    }
    catch(err){
        return false;
    }
    fs.mkdirSync(dirname);
    return true
}

问题:看起来有点麻烦,有没有更好的方法用nodejs来做?

我想我想知道你为什么不只列出目录中的文件并查看是否有任何文件回来?

fs.readdir(dirname, function(err, files) {
    if (err) {
       // some sort of error
    } else {
       if (!files.length) {
           // directory appears to be empty
       }
    }
});

当然,您也可以制作一个同步版本。

当然,这并不能保证目录中没有任何内容,但这确实意味着没有 public 个您有权在其中查看的文件。


这是一个函数形式的 promise 版本,用于较新版本的 nodejs:

function isDirEmpty(dirname) {
    return fs.promises.readdir(dirname).then(files => {
        return files.length === 0;
    });
}

可以使用 opendir 方法调用为目录创建迭代器。

这将消除读取所有文件的需要并避免潜在的内存和时间开销

import {promises as fsp} from "fs"
const dirIter = await fsp.opendir(_folderPath);
const {value,done} = await dirIter[Symbol.asyncIterator]().next();
await dirIter.close()

done 值会告诉你目录是否为空

简单的同步功能,就像您尝试的那样:

const fs = require('fs');

function isEmpty(path) {
    return fs.readdirSync(path).length === 0;
}