Parece que no puedo obtener ningún resultado de búsqueda que explique cómo hacer esto.
Todo lo que quiero hacer es saber si una ruta determinada es un archivo o un directorio (carpeta).
fs.lstatSync(path_string).isDirectory()
debería decirte De los documentos :
Los objetos devueltos por fs.stat () y fs.lstat () son de este tipo.
stats.isFile() stats.isDirectory() stats.isBlockDevice() stats.isCharacterDevice() stats.isSymbolicLink() (only valid with fs.lstat()) stats.isFIFO() stats.isSocket()
La solución anterior será throw
un Error
if; por ejemplo, el file
o directory
no existe.
Si quieres una true
o false
enfoque, tratar fs.existsSync(dirPath) && fs.lstatSync(dirPath).isDirectory();
como se ha mencionado por José en los comentarios a continuación.
let isDirExists = fs.existsSync(dirPath) && fs.lstatSync(dirPath).isDirectory();
Actualización: Node.Js> = 10
Podemos usar la nueva API fs.promises
Cualquier versión de Node.Js
Así es como detectaría si una ruta es un archivo o un directorio de forma asincrónica , que es el enfoque recomendado en el nodo. usando fs.lstat
Tenga en cuenta al usar la API síncrona:
fuente
En serio, la pregunta existe cinco años y no hay bonita fachada?
fuente
Dependiendo de sus necesidades, probablemente pueda confiar en el
path
módulo del nodo .Es posible que no pueda acceder al sistema de archivos (por ejemplo, el archivo aún no se ha creado) y, por cierto, es probable que desee evitar presionar el sistema de archivos a menos que realmente necesite la validación adicional. Si puede suponer que lo que está buscando sigue el
.<extname>
formato, solo mire el nombre.Obviamente, si está buscando un archivo sin un nombre de extensión, deberá acceder al sistema de archivos para estar seguro. Pero manténgalo simple hasta que necesite más complicado.
fuente
Las respuestas anteriores verifican si un sistema de archivos contiene una ruta que es un archivo o directorio. Pero no identifica si una ruta dada solo es un archivo o directorio.
Como una ruta de un directorio o archivo que aún no se ha escrito. O un camino desde una computadora diferente. O una ruta donde existe tanto un archivo como un directorio con el mismo nombre.
Versión de nodo: v11.10.0 - febrero de 2019
fuente
Aquí hay una función que uso. Nadie está haciendo uso de
promisify
y laawait/async
función en este post, así que pensé que iba a compartir.Nota: No lo uso
require('fs').promises;
porque ha sido experimental durante un año, mejor no confíe en él.fuente