【发布时间】:2016-07-12 06:30:02
【问题描述】:
我有一个文件,其中有时会包含\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 是的,我猜它是
\n,它被删除了 -
那我是对的。正在搜索
\00的字符串不在文件中。 -
那又怎样?这有什么关系?
\00有时会出现,有时不会出现。我所做的就是将一些内容写入文件,并附加而不是覆盖 -
你考虑过使用
replace函数吗?