我目前正在尝试找出在存储文件之前检查本地文件夹是否存在的“正确”方法,并且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),但是是否有不超过两年的“最佳实践”的官方信息?