2013-03-26 15 views

risposta

371

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() 
+13

Si noti che la versione asincrona di solito è preferibile se avete a cuore le prestazioni generali dell'applicazione. – AlexMA

+32

Ricordare che se la directory o il file non esiste, si otterrà un errore. –

17

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 
    } 
} 
Problemi correlati