节点 - 检查目录是否存在

时间:2016-03-07 16:54:32

标签: node.js

这应该是一个相当简单的答案,我希望,但它让我难过 - 也许我今天一直在盯着太多的代码!

我正在尝试执行一个简单的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();
        }
      });

任何有关如何实现这一目标的帮助将不胜感激

2 个答案:

答案 0 :(得分:30)

首先检查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();
  }
});

答案 1 :(得分:0)

你需要先检查统计数据是否存在!stats.isDirectory()