Nodo.js comprobar si la ruta es archivo o directorio
Parece que no puedo obtener ningún resultado de búsqueda que explique cómo hacer esto.
Todo lo que quiero hacer es ser capaz de saber si una ruta dada es un archivo o un directorio (carpeta).
2 answers
fs.lstatSync(path_string).isDirectory()
debería decírtelo. De los documentos :
Objetos devueltos desde 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()
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-11 13:40:12
Actualizar: Nodo.Js > = 10
Podemos usar el nuevo fs.promises API
Experimental Esta característica está todavía en desarrollo activo y sujeto a cambios no compatibles con versiones anteriores, o incluso eliminación, en cualquier versión futura. No se recomienda el uso de la función en producción ambiente. Las características experimentales no están sujetas al nodo.js Modelo de Versionado semántico.
const fs = require('fs').promises;
(async() => {
try {
const stat = await fs.lstat('test.txt');
console.log(stat.isFile());
} catch(err) {
console.error(err);
}
})();
Cualquier Nodo.Js version
Así es como detectarías si una ruta es un archivo o un directorio asincrónicamente, que es el enfoque recomendado en node. usando 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()}`);
});
Nota al usar la API síncrona:
Cuando se usa la forma síncrona, cualquier excepción se lanza inmediatamente. Puede usar try / catch para manejar excepciones o permitir que se formen burbujas.
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
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-11 02:34:34