【发布时间】:2019-06-28 02:30:06
【问题描述】:
我目前正在尝试找出“正确”的方法来检查本地文件夹是否存在,然后再将文件保存到其中,并且对 nodejs 文档有点困惑。
fs.exists() 已弃用,您应该使用 fs.stat() 或 fs.access()。到目前为止一切顺利。
fs.stat():
不建议在调用 fs.open()、fs.readFile() 或 fs.writeFile() 之前使用 fs.stat() 检查文件是否存在。相反,用户代码应该直接打开/读取/写入文件并处理文件不可用时引发的错误。
这表明,我应该尝试编写,捕获错误,创建文件夹,然后再试一次。我也很好,即使我正在移动/重命名文件,所以我不直接使用上述三个功能之一。
然后,医生说:
要检查文件是否存在而不进行后续操作,建议使用 fs.access()。
由于我并没有真正修改文件,而是“仅”修改了它的内容,因此有人可能会争辩说这是要走的路。
但话又说回来,fs.access() 文档也详细说明了为什么这是一个坏主意:
不建议在调用 fs.open()、fs.readFile() 或 fs.writeFile() 之前使用 fs.access() 检查文件的可访问性。这样做会引入竞争条件,因为其他进程可能会在两次调用之间更改文件的状态。相反,用户代码应该直接打开/读取/写入文件并处理文件不可访问时引发的错误。
Yadda yadda yadda,已经有一些相关的问题(here,或here),但是有没有关于不超过两年的“最佳实践”的官方信息?
【问题讨论】: