替换文件内容,而不使用Node.js创建新文件
我正在使用Node.js替换文件内容,而不使用Node.js创建新文件,node.js,Node.js,我正在使用Node.jsfs.writeFile()标志为我的问题找到正确的文件:我想替换文件的内容,但如果文件不存在,就会抛出错误 我的第一次尝试是使用r+,但如果新内容比旧内容短,我会遇到问题: fs.writeFileSync('test', '11111111111'); > 111111111111 fs.writeFileSync('test', '22', {flag: 'r+'}) > 221111111111 删除标志可以解决问题(给出22),但如果test不存在
fs.writeFile()
标志为我的问题找到正确的文件:我想替换文件的内容,但如果文件不存在,就会抛出错误
我的第一次尝试是使用r+
,但如果新内容比旧内容短,我会遇到问题:
fs.writeFileSync('test', '11111111111');
> 111111111111
fs.writeFileSync('test', '22', {flag: 'r+'})
> 221111111111
删除标志可以解决问题(给出22
),但如果test
不存在,则创建一个新文件
使用标志是否可行,或者我是否需要在之前检测文件是否存在(不太常见)?您不能一步完成此操作:如果文件不存在,打开文件进行写入将创建文件,而使用
r+
模式打开文件会出现您提到的问题
我看到两种选择:
fs.stat()
测试是否存在,然后在w
模式下使用fs.writeFile()
r+
模式打开文件,对其进行写入,然后fs.ftruncate()
将文件设置为所需大小我推荐第一种方法。代码将更易于阅读和推理。以前我一直被告知测试文件是一种反模式,因为它不能保证您在编写时的文件状态。我可以同时访问这个文件,所以第二个不是更好吗?谢谢,因为我想覆盖这个文件,我发现最好的方法就是删除它,注意错误(如果它不存在),然后用默认标志写入它。非常感谢。