2016-03-07 51 views
10

這應該是一個相當簡單的答案,我希望,但是它讓我難倒了 - 也許我今天一直在盯着太多的代碼!節點 - 檢查一個目錄是否存在

我想做一個簡單的if語句來檢查文件夾是否存在。如果該文件夾不存在,則創建該文件夾,如果存在,則刪除該內容。

我遇到的問題是,如果目錄不存在,那麼回調(統計)是未定義的。隨着fs.exist這將是非常簡單的,但由於其棄用,我想確保這是未來的證明。

var seriesid = 5; 
     fs.stat("temp/" + seriesid, function (err, stats){ 
     if(!stats.isDirectory()){ 
      fs.mkdir("temp/" + seriesid); 
      console.log('Folder doesn\'t exist, so I made the folder ' + seriesid); 
      callback(); 
     } 
     else if (err != 'ENOENT') { 
      callback(err); 
     } 
     else { 
      // TODO: Folder exists, delete contents 
      console.log('Does exist'); 
      callback(); 
     } 
     }); 

如何做到這一點任何幫助,將不勝感激

+0

檢查'err' _first_。如果'stats'爲'undefined',很可能遇到錯誤。 – Oka

+0

1.您應該首先檢查錯誤。 2.如果它不存在,統計數據是不確定的 – baao

+0

道歉,我剛剛意識到,當我點擊提交,所以我編輯了我的問題 – K20GH

回答

27

檢查err第一。然後檢查isDirectory()

fs.stat("temp/" + seriesid, function (err, stats){ 
    if (err) { 
    // Directory doesn't exist or something. 
    console.log('Folder doesn\'t exist, so I made the folder ' + seriesid); 
    return fs.mkdir("temp/" + seriesid, callback); 
    } 
    if (!stats.isDirectory()) { 
    // This isn't a directory! 
    callback(new Error('temp is not a directory!')); 
    } else { 
    console.log('Does exist'); 
    callback(); 
    } 
}); 
+0

啊當然!非常有意義。謝謝 – K20GH

+0

如果您不想直接處理'fs',https://www.npmjs.com/package/mkdirp – lasec0203

0

你需要檢查,如果這樣做之前存在統計!stats.isDirectory()

+0

https://github.com/sindresorhus/del也可以使用 – Kristoffer