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



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

fs.existsSync(path)

如果文件没有退出,我正在使用以下内容创建和写入:

fs.writeFileSync(path,string) 

问题是当文件已经存在并且我想覆盖其所有内容时。是否有单线解决方案,到目前为止,我搜索并找到了使用fs.truncate & fs.write,但是有没有一键解决方案?

fs.writeFileSync并且默认情况下fs.writeFile覆盖文件,如果这是您要执行的操作,则无需进行额外检查。文档中提到了这一点:

fs.writeFile

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

找到了解决方案。fs.writeFileSync 获取可以是对象的选项的第三个参数。因此,如果您得到"文件已经存在",您应该这样做。

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

当你说"最佳方法"时,我认为性能和可扩展性,我会说使用异步方法

顾名思义fs.writeFileSync(path,string)是同步的(阻塞 API(,线程在请求的整个生命周期中都是保留的,这意味着您的 NodeJS 线程将被阻止,直到操作完成,并且在同时连接多个客户端的生产环境中的这种行为可能会终止您的应用程序。

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

相关内容