replace文件内容而不用Node.js创build一个新文件

我正在玩Node.js fs.writeFile()标志来find我的问题的正确的文件:我想要replace文件的内容,但如果文件不存在则抛出一个错误。

我第一次尝试使用r+但是如果新内容比旧的内容短,我会遇到问题:

 fs.writeFileSync('test', '11111111111'); > 111111111111 fs.writeFileSync('test', '22', {flag: 'r+'}) > 221111111111 

删除标志解决问题(给22 ),但如果test不存在,创build一个新的文件。

这是可以用一个标志或我需要检测文件的存在之前(不是很发现)?

你不能一步完成这个工作:打开一个文件写入文件将会创build文件,如果文件不存在的话,用r+模式打开文件会导致你提到的问题。

我看到两个选项:

  1. 使用fs.stat()testing存在性,然后在w模式下testingfs.writeFile()
  2. r+模式打开文件,写入文件,然后将fs.ftruncate()文件转换为所需的大小。

我build议第一种方法。 代码将更容易阅读和推理。