【问题标题】:Node.js error-handle relevance between fs.stat and fs.readFileSyncfs.stat 和 fs.readFileSync 之间的 Node.js 错误处理相关性
【发布时间】:2020-11-27 07:35:45
【问题描述】:

首先,抱歉我的英语不好,感谢您点击这个问题。

我想用 Node.js 代码读取一些文件

为此,首先,我必须检查文件是否存在。

所以我为此使用了 fs.stat。

然后,我想同步读取文件。

所以我为此使用了 fs.readFileSync。

我的问题是 虽然我处理了 fs.stat 的错误,但我应该单独处理 fs.readFilesync 的错误吗?

下面是代码

  fs.stat('./fooData.json', function(err, stat){
    if(err === null){ // <-- on this point, fooData.json's existence is confirmed.
      try{ // <-- should I error-handle for readFilesync again ?
        let oldData = fs.readFileSync('./fooData.json');
      }
      catch(e){
        console.log(e); // file read error handle
      }
    }

【问题讨论】:

    标签: javascript node.js error-handling file-io


    【解决方案1】:

    是的,你应该这样做,因为调用fs.stat 并不能保证在调用fs.readFileSync 时文件存在,而且它不保证你可以读取这个文件(没有权限等等)。

    Node.js 官方文档不建议在fs.readFileSync 之前使用fs.stat:

    不建议在调用 fs.open()、fs.readFile() 或 fs.writeFile() 之前使用 fs.stat() 检查文件是否存在。相反,用户代码应该直接打开/读取/写入文件并处理文件不可用时引发的错误。

    见fs.stat

    【讨论】:

      猜你喜欢
      • 2014-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-30
      • 2012-04-03
      • 1970-01-01
      • 1970-01-01
      • 2014-03-13
      相关资源
      最近更新 更多