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+
模式打开文件会导致你提到的问题。
我看到两个选项:
- 使用
fs.stat()
testing存在性,然后在w
模式下testingfs.writeFile()
。 - 以
r+
模式打开文件,写入文件,然后将fs.ftruncate()
文件转换为所需的大小。
我build议第一种方法。 代码将更容易阅读和推理。