web-dev-qa-db-ja.com

nodejsでディレクトリが空のディレクトリかどうかを判断する方法

Nodejs Docを検索しましたが、相対APIが見つかりません。

そこで、次のコードを記述して、ディレクトリが空のディレクトリかどうかを判断します。

var fs = require('fs');

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

質問:それはいくつかの厄介なように見えます、nodejsでそれを行うより良い方法はありますか?

14
Qiu

ディレクトリ内のファイルを一覧表示して、ファイルが返されるかどうかを確認しないのはなぜでしょうか。

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

もちろん、これの同期バージョンも作成できます。

もちろん、これはディレクトリに何もないことを保証するものではありませんが、そこに表示する権限がある公開ファイルがないことを意味します。

20
jfriend00

ディレクトリのイテレータを作成する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値は、ディレクトリが空かどうかを示します

0
johnmerm

あなたがしようとしていたような単純な同期機能:

const fs = require('fs');

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