2

我正在尝试通过 Web 界面编辑降价文件。我已经可以在我的编辑器中成功读取和解析文件。

现在我正在尝试在用户输入时更新原始文件。我正在使用带有 r+ 标志的 createWriteStream。用户输入已成功写入目标文件,但文件中不断添加一些奇怪的字符。

我认为这是一些编码问题,但不知道该怎么做。

这是我的代码:

    let writer = null;
    const setNewWriteStream = path => {
      if (writer) {
        writer.end();
        writer = null;
      }
      writer = fs.createWriteStream(path, { flags: 'r+' });
    };
    const writeNewData = data => {
      fs.truncate(writer.path, 0, err => {
        if (err) {
          console.log(err);
          return;
        }
        writer.write(data);
      });
    };

所以基本上,每次用户打开一个文件时,我都会重置编写器并创建一个新的。当用户键入时,将调用 writeNewData 函数,将整个文档的文本作为参数传递。所以我截断了内容并写了新的。

这是我打开文件时的内容:

# Overview

这是更新后的: 奇怪的字符

我尝试将编码显式设置为“utf8”,但没有成功。我在文档中搜索了选项及其描述,但我必须说我在这个过程中迷路了。

我还尝试了 strip-bom 库,认为它可能是 BOM 字符(仍然不确定)但没有成功。

writer.write(stripBom(data)) // same result

编辑:

看起来这个问题只在使用 truncate 方法时发生。我尝试使用 truncateSync 但发生了同样的问题。如果我根本不使用截断,除了文件的全部内容不断地附加到前一个内容之外,没有问题。导致这样的事情:

# Overview# Overview t# Overview te# Overview tes# Overview test
4

0 回答 0