2013-03-26 87 views

回答

371

fs.lstatSync(path_string).isDirectory()應該告訴你。從docs

從fs.stat()和fs.lstat()返回的對象屬於這種類型。

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

請注意,如果你關心的一般應用性能異步版本通常是優選的。 – AlexMA 2014-03-14 20:10:44

+32

請記住,如果目錄或文件不存在,那麼您將收到錯誤信息。 – 2014-12-27 20:12:14

17

這裏如果路徑是一個文件或目錄異步,這是在節點推薦的方法你會怎麼檢測。 使用同步API時使用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()}`); 
}); 

注:

當使用同步形式的任何異常立即拋出。 您可以使用try/catch來處理異常或讓它們冒泡。

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 
    } 
} 
相關問題