gpt4 book ai didi

node.js - Node 的 fs.writeFile 不会覆盖以前的内容

转载 作者:太空宇宙 更新时间:2023-11-04 00:37:33 36 4
gpt4 key购买 nike

我有一个文件,有时会在其中包含 \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为我指明了正确的方向。

由于我测试的文件中没有 \00 字符,因此 str.indexOf('\00') 正在获取整个文件,而 str.slice(str.lastIndexOf('\00') 又正在获取整个文件。这就是我认为的原因

使用替换功能完成了这项工作。

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

关于node.js - Node 的 fs.writeFile 不会覆盖以前的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38321486/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com