在Node.js中覆盖一个文件

13

我正在尝试使用Node.js向文本文件写入内容。我是这样做的:

fs.writeFile("persistence\\announce.txt", string, function (err) {
    if (err) {
        return console.log("Error writing file: " + err);
    }
});

字符串是一个变量。

这个函数总是从文件的开头开始写入,因此它会覆盖先前的内容。

在以下情况下我遇到了问题:

旧内容:

Hello Stackoverflow
新的写入:
Hi Stackoverflow

现在文件中将包含以下内容:
Hi stackoverflowlow

新的写入内容比之前的内容更短,因此旧内容的一部分仍然存在。

我的问题:

为了在进行新的写入操作之前彻底删除文件中的旧内容,我需要做什么?


看一下官方文档,你肯定会找到一些东西的,writeStream或类似的选项。https://nodejs.org/api/ - Vitaliy Terziev
2个回答

14

您可以尝试先截断文件:

fs.truncate("persistence\\announce.txt", 0, function() {
    fs.writeFile("persistence\\announce.txt", string, function (err) {
        if (err) {
            return console.log("Error writing file: " + err);
        }
    });
});

2

将旧文件重命名并追加到一个不存在的文件中(创建一个新文件)。这样一来,您既有了备份,又有了最新更新的文件./config.json

fs.renameSync('./config.json', './config.json.bak')
fs.appendFileSync('./config.json', text)

(同步版本,可能会抛出异常)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接