How to check if a directory is empty or if there is an existing file in the folder?

Asked

Viewed 684 times

1

I would like to know how to check whether a directory (folder) is empty and whether a file already exists in it in Nodejs. Example:

const fs = require("fs");

// recebeJson é a pasta que precisa ser verificada se está vazia.
fs.readFile("./recebeJson", function(err, data) {

    if (err){
        return console.log("Arquivo vazio");
    }

    // se caso não estiver vazia ela retornaria a chamada de outro script.
    else {
        return ("./verificacaoJson.js");
    }
})

2 answers

1

To check if a file exists in a directory, use the function fs.exists (deprecated) or else the function fs.existsSync. See the example below:

const filename = "file.txt";

if (fs.existsSync(filename)) {
    // Code ...
}

To check whether a directory is empty or not, you can use the function fs.readdir or the function fs.readdirSync to get an array of all the files in a directory.

This way, just check the size of this array to see if the directory is empty or not.

const path = ".";
const isEmpty = fs.readdirSync(path).length > 0 ? false : true;

0

You can use the method readdir of fs and in the callback, check if there are any files, using the length:

fs.readdir(diretorio, function(err, files) {
    if (err) {
        console.error("Erro na leitura do diretório:", err);
    } else {
        if (files.length) {
            console.log(`O diretório '${diretorio}' possui arquivos ou pastas.`);
        } else {
            console.log(`O diretório '${diretorio}' está vazio.`);
        }
    }
});

See online: https://repl.it/repls/PalatableMelodicSign


The same idea can be implemented using the method readdirSync:

if (fs.readdirSync(diretorio).length) {
    console.log(`O diretório '${diretorio}' possui arquivos ou pastas.`);
} else {
    console.log(`O diretório '${diretorio}' está vazio.`);
}

See online: https://repl.it/repls/AnimatedIllfatedComments


Documentation: https://nodejs.org/api/fs.html

Browser other questions tagged

You are not signed in. Login or sign up in order to post.