我正在使用Node.js fs.writeFile()
标记为我的问题找到正确的文件:我想替换文件的内容,但如果文件不存在则抛出错误。
我的第一次尝试是r+
,但如果新内容比旧内容短,我会遇到问题:
fs.writeFileSync('test', '11111111111');
> 111111111111
fs.writeFileSync('test', '22', {flag: 'r+'})
> 221111111111
删除标志可解决问题(提供22
),但如果test
不存在则创建新文件。
是否可以使用标志,或者我之前是否需要检测文件存在(不是很常见)?
答案 0 :(得分:2)
您不能一步完成:打开文件进行写入将创建文件(如果文件不存在),而以r+
模式打开文件会出现您提到的问题。
我看到两个选项:
fs.stat()
测试是否存在,然后fs.writeFile()
模式下的w
。r+
模式打开文件,写入文件,然后fs.ftruncate()
将文件缩小到所需的大小。我推荐第一种方法。代码将更容易阅读和推理。