【问题标题】:fs.writeFile() only saving part of stringfs.writeFile() 只保存部分字符串
【发布时间】:2014-03-15 11:47:56
【问题描述】:

我正在使用 node-webkit 创建一个文本编辑器。当用户单击“保存”菜单项时,我使用 fs.writeFile() 方法将纯文本文件写入磁盘:

fs.writeFile(file, txt, function (err) {
  if (err) throw err;
  console.log("file saved");
});

但是,它不会保存通过“txt”变量传递的整个字符串。它只将前 300 个字符左右保存到文件中。

我尝试过使用这种方法,以及同步方法 fs.writeFileSync。两者都有同样的问题。我已经尝试记录传递给该方法的 txt 字符串,以确保那里没有任何问题。

任何想法为什么我没有在我保存的文件中获得全文?

【问题讨论】:

  • 您是否尝试过删除前 200 个字符来保存文件?
  • 我试过缩小和放大字符串。如果它低于约 300 个字符,它会保存完整的内容。任何事情都没有。
  • 您是否尝试过使用流写入文件?
  • 刚刚试了一下,结果是一样的: var stream = fs.createWriteStream(file); stream.once('open', function(fd) { stream.write(txt); stream.end(); });
  • txt 是如何创建的?它是如何设置的?

标签: javascript node.js node-webkit


【解决方案1】:

根据这篇帖子:node-webkit Google 组中的https://groups.google.com/forum/#!topic/node-webkit/3M-0v92o9Zs,这可能是编码问题。尝试更改编码。我遇到了同样的问题,并将我的编码更改为该线程中指定的 utf16le,它解决了问题;整个字符串被写入文件。

我的代码现在是:fs.writeFileSync(path, data, {encoding:'utf16le'});

【讨论】:

  • P.S.我还没有找到所有可能编码的列表。有谁知道在哪里可以找到?
猜你喜欢
  • 2021-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-05
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
相关资源
最近更新 更多