在不使用Node.js创建新文件的情况下替换文件内容

时间:2016-11-14 17:28:47

标签: node.js

我正在使用Node.js fs.writeFile()标记为我的问题找到正确的文件:我想替换文件的内容,但如果文件不存在则抛出错误。

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

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

删除标志可解决问题(提供22),但如果test不存在则创建新文件。

是否可以使用标志,或者我之前是否需要检测文件存在(不是很常见)?

1 个答案:

答案 0 :(得分:2)

您不能一步完成:打开文件进行写入将创建文件(如果文件不存在),而以r+模式打开文件会出现您提到的问题。

我看到两个选项:

  1. 使用fs.stat()测试是否存在,然后fs.writeFile()模式下的w
  2. r+模式打开文件,写入文件,然后fs.ftruncate()将文件缩小到所需的大小。
  3. 我推荐第一种方法。代码将更容易阅读和推理。