Node.js ошибка -обработка релевантности между fs.stat и fs.readFileSync

#javascript #node.js #error-handling #file-io

#javascript #node.js #обработка ошибок #file-io

Вопрос:

Прежде всего, извините за мой плохой английский и спасибо, что нажали на этот вопрос.

Я хочу прочитать некоторые файлы с 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
      }
    }
 

Ответ №1:

Да, вы должны, потому что вызов fs.stat не гарантирует существование файла в момент вызова fs.readFileSync и, более того, не гарантирует, что вы вообще сможете прочитать этот файл (без разрешений и так далее).

Официальный Node.js документация не рекомендует использовать fs.stat до fs.readFileSync :

Не рекомендуется использовать fs.stat() для проверки существования файла перед вызовом fs.open(), fs.ReadFile() или fs.WriteFile(). Вместо этого пользовательский код должен открывать / читать / записывать файл напрямую и обрабатывать ошибку, возникающую, если файл недоступен.

См. fs.stat