2017-05-10 37 views
1

我想覆盖现有的文件。 我首先检查文件是否存在使用:什么是在node.js中使用fs覆盖文件的最好方法

fs.existsSync(path) 

如果文件不退出我创建并写入使用:

fs.writeFileSync(path,string) 

问题是,当该文件已经存在,我想重写所有内容。 是否有单线解决方案,到目前为止,我搜索并找到使用fs.write的 fs.write的解决方案,但有没有一种解决方案?

+3

不写writeFileSync默认覆盖文件? – Quentin

回答

2

当你说最好的方式,我认为在性能和可伸缩性,我会说使用异步方法。例如:this

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

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

+0

主要问题是当我在已经存在的文件上使用fs.writeFileSync时,我得到了“文件已存在”。 –

5

fs.writeFileSyncfs.writeFile默认覆盖该文件,如果这是您想要执行的操作,则不需要额外的检查。这甚至在docs中提到。

+0

当文件已存在时,出现“文件已存在”错误。 这是问题的主要部分,但无论如何tnx。 –

2

找到解决方案。 fs.writeFileSync获取可以是对象的选项的第三个参数。 所以,如果你得到“文件已存在”,你应该这样做。

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

从我在[docs](https://nodejs.org/api/fs.html#fs_fs_writefile_file_data_options_callback)中看到的那个标志是默认的..也许你使用了不同的标志 – mihai

相关问题