什么是使用node.js中的fs覆盖文件的最佳方法

时间:2017-05-10 12:25:47

标签: javascript node.js

我试图覆盖现有文件。 我首先使用以下方法检查文件是否存在:

> 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,但有一个一击的解决方案吗?

3 个答案:

答案 0 :(得分:36)

默认情况下,

fs.writeFileSyncfs.writeFile会覆盖该文件,如果您想要这样做,则无需额外检查。这在文档中提到:

fs.writeFile

  

异步将数据写入文件,替换文件(如果已存在)。

答案 1 :(得分:6)

找到解决方案。 fs.writeFileSync获取可以作为对象的选项的第三个参数。 所以如果你得到了'#34;文件已经存在"你应该这样做。

fs.writeFileSync(path,content,{encoding:'utf8',flag:'w'})

答案 2 :(得分:2)

当你说出最佳方式时,我认为在性能和可扩展性方面,我会说使用异步方法。例如this

fs.writeFileSync(path,string)是同步的,这意味着您的nodejs线程将被阻止,直到操作完成为止,并且在具有来自多个客户端的同时连接的生产环境中,这可能会终止您的应用。

不要在单行代码中考虑,更少的代码并不意味着更好的性能。