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

问题描述 投票:0回答:3

我搜索了Nodejs Doc,但没有找到相关的API。

所以我写了下面的代码来判断该目录是否为空目录。

var fs = require('fs');

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

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

node.js path fs
3个回答
46
投票

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

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

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

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


这是新版本 Nodejs 的函数形式的 Promise 版本:

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

25
投票

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

const fs = require('fs');

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

7
投票

可以使用

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.