Узел.js проверьте, является ли путь файлом или каталогом
Я не могу получить никаких результатов поиска, которые объясняют, как это сделать.
все, что я хочу сделать, это знать, является ли данный путь файлом или каталогом (папкой).
2 ответа:
fs.lstatSync(path_string).isDirectory()
должен вам сказать. Из docs:объекты, возвращенные из fs.stat () и fs.lstat() относятся к этому типу.
stats.isFile() stats.isDirectory() stats.isBlockDevice() stats.isCharacterDevice() stats.isSymbolicLink() (only valid with fs.lstat()) stats.isFIFO() stats.isSocket()
Обновление: Узел.Js >= 10
мы можем использовать новый fs.обещания API
экспериментальная эта функция все еще находится в активной разработке и тема не совместима изменения или даже удаления, в любом будущая версия. Использование функции не рекомендуется в производстве окружающая среда. Экспериментальные возможности не подчиняются узлу.js Семантическая модель управления версиями.
const fs = require('fs').promises; (async() => { try { const stat = await fs.lstat('test.txt'); console.log(stat.isFile()); } catch(err) { console.error(err); } })();
Любой Узел.Js версия
вот как бы вы определили, является ли путь файлом или каталогом асинхронно, который является рекомендуемым подходом в узел. используя fs.lstat
const fs = require("fs"); let path = "/path/to/something"; fs.lstat(path, (err, stats) => { if(err) return console.log(err); //Handle error console.log(`Is file: ${stats.isFile()}`); console.log(`Is directory: ${stats.isDirectory()}`); console.log(`Is symbolic link: ${stats.isSymbolicLink()}`); console.log(`Is FIFO: ${stats.isFIFO()}`); console.log(`Is socket: ${stats.isSocket()}`); console.log(`Is character device: ${stats.isCharacterDevice()}`); console.log(`Is block device: ${stats.isBlockDevice()}`); });
Примечание при использовании синхронного API:
при использовании синхронной формы любые исключения немедленно выдаются. Вы можете использовать try/catch для обработки исключений или позволить им вырваться наружу.
try{ fs.lstatSync("/some/path").isDirectory() }catch(e){ // Handle error if(e.code == 'ENOENT'){ //no such file or directory //do something }else { //do something else } }