#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