我试图覆盖现有文件。 我首先使用以下方法检查文件是否存在:
> docker run busybox echo hello world
Unable to find image 'busybox' locally
Pulling repository busybox
e72ac664f4f0: Download complete
511136ea3c5a: Download complete
df7546f9f060: Download complete
e433a6c5b276: Download complete
hello world
如果文件没有退出我使用以下方式创建和编写:
fs.existsSync(path)
问题是当文件已经存在并且我想重写其所有内容时。 是否有单行解决方案,到目前为止我搜索并找到了使用的解决方案 fs.truncate& fs.write,但有一个一击的解决方案吗?
答案 0 :(得分:36)
fs.writeFileSync
和fs.writeFile
会覆盖该文件,如果您想要这样做,则无需额外检查。这在文档中提到:
异步将数据写入文件,替换文件(如果已存在)。
答案 1 :(得分:6)
找到解决方案。 fs.writeFileSync获取可以作为对象的选项的第三个参数。 所以如果你得到了'#34;文件已经存在"你应该这样做。
fs.writeFileSync(path,content,{encoding:'utf8',flag:'w'})
答案 2 :(得分:2)
当你说出最佳方式时,我认为在性能和可扩展性方面,我会说使用异步方法。例如this
fs.writeFileSync(path,string)
是同步的,这意味着您的nodejs线程将被阻止,直到操作完成为止,并且在具有来自多个客户端的同时连接的生产环境中,这可能会终止您的应用。
不要在单行代码中考虑,更少的代码并不意味着更好的性能。