【问题标题】:Overwrite a File in Node.js在 Node.js 中覆盖文件
【发布时间】:2016-05-12 18:13:33
【问题描述】:

我正在尝试写入 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 或类似的东西或某种选项。 nodejs.org/api

标签: javascript node.js


【解决方案1】:

重命名旧文件并附加到一个不存在的文件(创建一个新文件)。这样,您一方面拥有备份,另一方面拥有全新更新的文件./config.json

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

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

【讨论】:

    【解决方案2】:

    您可以先尝试截断文件:

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

    【讨论】:

      猜你喜欢
      • 2016-03-23
      • 2016-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-20
      • 1970-01-01
      相关资源
      最近更新 更多