2016-03-07 86 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