2016-11-11 2 views
0

Ich benutze fs.stat wenn ein Ordner vorhanden ist zu überprüfen:Prüfen, ob mehrere Ordner vorhanden sind?

fs.stat('path-to-my-folder', function(err, stat) { 
    if(err) { 
     console.log('does not exist'); 
    } 
    else{ 
     console.log('does exist'); 
    } 
}); 

Gibt es eine Möglichkeit, die Existenz von mehreren Pfaden nur eine Methode zu überprüfen?

Antwort

1

Nein, die Dateisystem-API verfügt nicht über eine Funktion zum Überprüfen, ob mehrere Ordner vorhanden sind. Sie müssen nur die fs.stat() Funktion mehrmals aufrufen.

2

fs hat nichts, das es aus der Box tut, aber Sie können eine Funktion erstellen, um es zu tun.

function checkIfAllExist (paths) { 
    return Promise.all(
    paths.map(function (path) { 
     return new Promise(function (resolve, reject) { 
     fs.stat(path, function (err, stat) { 
      err && reject(path) || resolve() 
     }); 
     }); 
    })) 
); 
}; 

Sie würden verwenden, um dies wie folgt aus:

checkIfAllExist([path1, path2, path3]) 
    .then(() => console.log('all exist')) 
    .catch((path) => console.log(path + ' does not exist') 

Man könnte es zwicken an verschiedenen Punkten und so weiter zum Scheitern verurteilt, aber Sie die allgemeine Idee.

+0

Kürzere und vielleicht sauberer: 'paths.map (Pfad => neue Versprechen (...))' –

+0

Bedeuten Sie nur ES6-Format verwenden? Normalerweise mache ich das, aber ich behalte es im selben Format wie die ursprüngliche Frage. Es ist viel sauberer im ES6-Format. – samanime

+0

Ja. BTW 'function (err, stat) => {' ist eine ungültige Syntax. –

Verwandte Themen