2013-03-26 9 views

Antwort

371

fs.lstatSync(path_string).isDirectory() sollte Ihnen sagen. Von der docs:

Objekte zurückgegeben von fs.stat() und fs.lstat() sind von diesem Typ.

stats.isFile() 
stats.isDirectory() 
stats.isBlockDevice() 
stats.isCharacterDevice() 
stats.isSymbolicLink() (only valid with fs.lstat()) 
stats.isFIFO() 
stats.isSocket() 
+13

Beachten Sie, dass die asynchrone Version in der Regel vorzuziehen ist, wenn Sie über allgemeine App-Leistung sorgen. – AlexMA

+32

Beachten Sie, dass wenn das Verzeichnis oder die Datei nicht existiert, Sie einen Fehler zurück erhalten. –

17

Hier ist, wie würden Sie erkennen, ob ein Pfad eine Datei oder ein Verzeichnis asynchron, die die empfohlene Vorgehensweise in Knoten ist. 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()}`); 
}); 

Beachten Sie, wenn die synchrone API:

Wenn die synchrone Formular werden alle Ausnahmen sofort geworfen. Sie können try/catch verwenden, um Ausnahmen zu behandeln oder zu ermöglichen, dass sie aufblühen.

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