节点的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,'');