Nie mogę uzyskać wyników wyszukiwania, które wyjaśniają, jak to zrobić.
Chcę tylko wiedzieć, czy dana ścieżka jest plikiem, czy katalogiem (folderem).
fs.lstatSync(path_string).isDirectory()
powinienem ci powiedzieć. Z dokumentów :
Obiekty zwrócone z fs.stat () i fs.lstat () są tego typu.
stats.isFile() stats.isDirectory() stats.isBlockDevice() stats.isCharacterDevice() stats.isSymbolicLink() (only valid with fs.lstat()) stats.isFIFO() stats.isSocket()
Powyższy roztwór będzie if; na przykład, lubthrow
Error
file
directory
nie istnieje.
Jeśli chcesz true
lub false
podejdź, spróbuj, fs.existsSync(dirPath) && fs.lstatSync(dirPath).isDirectory();
jak wspomniano w komentarzach Josepha.
let isDirExists = fs.existsSync(dirPath) && fs.lstatSync(dirPath).isDirectory();
Aktualizacja: Node.Js> = 10
Możemy użyć nowego API fs.promises
Dowolna wersja Node.Js
Oto, jak można wykryć, czy ścieżka jest plikiem lub katalogiem asynchronicznie , co jest zalecanym podejściem w węźle. using fs.lstat
Uwaga podczas korzystania z synchronicznego interfejsu API:
źródło
Poważnie, pytanie istnieje pięć lat i nie ma ładnej fasady?
źródło
W zależności od potrzeb możesz prawdopodobnie polegać na węzłach
path
module .Możesz nie być w stanie trafić do systemu plików (np. Plik nie został jeszcze utworzony) i tbh prawdopodobnie chcesz uniknąć uderzenia w system plików, chyba że naprawdę potrzebujesz dodatkowej weryfikacji. Jeśli możesz założyć, że to, co sprawdzasz, ma
.<extname>
format, po prostu spójrz na nazwę.Oczywiście, jeśli szukasz pliku bez nazwy pliku, musisz trafić do systemu plików, aby się upewnić. Ale zachowaj prostotę, dopóki nie będziesz potrzebować bardziej skomplikowanych.
źródło
Powyższe odpowiedzi sprawdzają, czy system plików zawiera ścieżkę, która jest plikiem lub katalogiem. Ale nie identyfikuje, czy sama ścieżka jest plikiem czy katalogiem.
Jak ścieżka do katalogu lub pliku, który nie został jeszcze zapisany. Lub ścieżka z innego komputera. Lub ścieżka, w której istnieje zarówno plik, jak i katalog o tej samej nazwie.
Wersja węzła: v11.10.0 - luty 2019
źródło
Oto funkcja, której używam. Nikt nie jest wykorzystanie
promisify
iawait/async
funkcji w tym poście więc pomyślałem, że podzielę.Uwaga: nie używam,
require('fs').promises;
ponieważ jest eksperymentalny od roku, lepiej nie polegaj na nim.źródło