节点的fs.writeFile不会覆盖以前的内容

我有一个文件,有时会得到\00空字符在里面。 所以我需要修复它。

这就是为什么我正在阅读,删除无效的字符,并再次写入。 但是, fs.writeFile不会覆盖以前的内容。 新的内容被追加,这不是我想要的。

是因为我的写代码在读代码里面?

 fs.readFile('./' + file, function (err, data) { if (err) { console.error(err); return; } var str = data.toString(); var repaired = str.slice(0, str.indexOf('\00')) + str.slice(str.lastIndexOf('\00') + 1, str.length); //console.log(repaired); fs.writeFile('./' + file, repaired, function (err) { if (err) console.error(err); }); }); 

我也尝试使用{flag:'w'} (我认为fs.writeFile可能已经默认)

感谢@ thefourtheye指引我朝着正确的方向。

由于在我testing的文件中没有\00字符, str.indexOf('\00')正在获取整个文件,并且str.slice(str.lastIndexOf('\00')正在获取整个文件,这就是为什么我想

使用replacefunction做了工作。

 var repaired = str.replace(/\00/g,'');