Ich kann anscheinend keine Suchergebnisse erhalten, die erklären, wie das geht.
Ich möchte nur wissen können, ob ein bestimmter Pfad eine Datei oder ein Verzeichnis (Ordner) ist.
fs.lstatSync(path_string).isDirectory()
sollte es dir sagen. Aus den Dokumenten :
Von fs.stat () und fs.lstat () zurückgegebene Objekte sind von diesem Typ.
stats.isFile() stats.isDirectory() stats.isBlockDevice() stats.isCharacterDevice() stats.isSymbolicLink() (only valid with fs.lstat()) stats.isFIFO() stats.isSocket()
Die obige Lösung wird throw
ein Error
wenn; Zum Beispiel existiert das file
oder directory
nicht.
Wenn Sie eine true
oder false
Annäherung wünschen , versuchen Sie es fs.existsSync(dirPath) && fs.lstatSync(dirPath).isDirectory();
wie von Joseph in den Kommentaren unten erwähnt.
let isDirExists = fs.existsSync(dirPath) && fs.lstatSync(dirPath).isDirectory();
Update: Node.Js> = 10
Wir können die neue fs.promises- API verwenden
Beliebige Node.Js-Version
So erkennen Sie, ob ein Pfad asynchron eine Datei oder ein Verzeichnis ist. Dies ist der empfohlene Ansatz in Node. mit fs.lstat
Hinweis bei Verwendung der synchronen API:
quelle
Ernsthaft, Frage existiert fünf Jahre und keine schöne Fassade?
quelle
Abhängig von Ihren Anforderungen können Sie sich wahrscheinlich auf das
path
Modul des Knotens verlassen .Möglicherweise können Sie das Dateisystem nicht erreichen (z. B. wurde die Datei noch nicht erstellt), und Sie möchten wahrscheinlich vermeiden, das Dateisystem zu erreichen, es sei denn, Sie benötigen wirklich die zusätzliche Validierung. Wenn Sie davon ausgehen können, dass das, wonach Sie
.<extname>
suchen, dem folgenden Format entspricht, sehen Sie sich einfach den Namen an.Wenn Sie nach einer Datei ohne Ext-Namen suchen, müssen Sie natürlich auf das Dateisystem klicken, um sicherzugehen. Aber halten Sie es einfach, bis Sie komplizierter brauchen.
quelle
Die obigen Antworten prüfen, ob ein Dateisystem einen Pfad enthält, der eine Datei oder ein Verzeichnis ist. Es wird jedoch nicht identifiziert, ob ein bestimmter Pfad allein eine Datei oder ein Verzeichnis ist.
Wie ein Pfad eines Verzeichnisses oder einer Datei, die noch nicht geschrieben wurde. Oder ein Pfad von einem anderen Computer. Oder ein Pfad, in dem sowohl eine Datei als auch ein Verzeichnis mit demselben Namen vorhanden sind.
Knotenversion: v11.10.0 - Februar 2019
quelle
Hier ist eine Funktion, die ich benutze. Niemand nutzt
promisify
und präsentiertawait/async
in diesem Beitrag, also dachte ich, ich würde teilen.Hinweis: Ich benutze
require('fs').promises;
es nicht, weil es seit einem Jahr experimentell ist. Verlassen Sie sich besser nicht darauf.quelle