J'ai recherché le Nodejs Doc, mais ne trouve pas d'API relative.
J'écris donc le code suivant pour déterminer si le répertoire est un répertoire vide.
var fs = require('fs');
function isEmptyDir(dirnane){
try{
fs.rmdirSync(dirname)
}
catch(err){
return false;
}
fs.mkdirSync(dirname);
return true
}
QUESTION: cela ressemble à des problèmes, il y a une meilleure façon de le faire avec nodejs?
Je suppose que je me demande pourquoi vous ne listez pas simplement les fichiers dans le répertoire et voyez si vous récupérez des fichiers?
fs.readdir(dirname, function(err, files) {
if (err) {
// some sort of error
} else {
if (!files.length) {
// directory appears to be empty
}
}
});
Bien sûr, vous pouvez également en faire une version synchrone.
Bien sûr, cela ne garantit pas qu'il n'y a rien dans le répertoire, mais cela signifie qu'il n'y a pas de fichiers publics que vous êtes autorisé à y voir.
Il existe la possibilité d'utiliser l'appel de méthode opendir
qui crée un itérateur pour le répertoire.
Cela supprimera la nécessité de lire tous les fichiers et évitera la mémoire potentielle et le temps supplémentaire
import {promises as fsp} from "fs"
const dirIter = await fsp.opendir(_folderPath);
const {value,done} = await dirIter[Symbol.asyncIterator]().next();
await dirIter.close()
La valeur done vous dirait si le répertoire est vide
fonction de synchronisation simple comme vous essayiez de:
const fs = require('fs');
function isEmpty(path) {
return fs.readdirSync(path).length === 0;
}