Non riesco a ottenere risultati di ricerca che spieghino come farlo.Node.js verifica se il percorso è file o directory
Tutto quello che voglio fare è essere in grado di sapere se un dato percorso è un file o una directory (cartella).
Non riesco a ottenere risultati di ricerca che spieghino come farlo.Node.js verifica se il percorso è file o directory
Tutto quello che voglio fare è essere in grado di sapere se un dato percorso è un file o una directory (cartella).
fs.lstatSync(path_string).isDirectory()
dovrebbe dirti. Da docs:
Gli oggetti restituiti da fs.stat() e fs.lstat() sono di questo tipo.
stats.isFile() stats.isDirectory() stats.isBlockDevice() stats.isCharacterDevice() stats.isSymbolicLink() (only valid with fs.lstat()) stats.isFIFO() stats.isSocket()
Ecco come si potrebbe rilevare se un percorso è un file o una directory in modo asincrono , che è l'approccio consigliato in nodo. utilizzando 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 quando si utilizza l'API sincrono:
Quando si utilizza il modulo sincrono eventuali eccezioni sono immediatamente gettati. È possibile utilizzare try/catch per gestire le eccezioni o consentire loro di presentare bolle.
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
}
}
Si noti che la versione asincrona di solito è preferibile se avete a cuore le prestazioni generali dell'applicazione. – AlexMA
Ricordare che se la directory o il file non esiste, si otterrà un errore. –