如何在具有可写流的循环中按顺序在节点中写入流

  • 本文关键字:顺序 节点 循环 node.js stream fs
  • 更新时间 :
  • 英文 :


我想通过循环将行附加到 Node 中的可写流文件中,这是一个可写流。

这是我所说的简化版本:

var fs = require('fs');
var outfile = fs.createWriteStream('outfile.txt');
for (var i = 0; i < 200; i++) {
    outfile.write('i', function (err, len) {
        console.log('written');
    });
}

我需要按顺序写入文件,这意味着它会按顺序写入12345...etc。 我的理解是outfile.write是异步的,这意味着文件可能会乱写 - 这是正确的吗?

我从节点文档中看到

请注意,在同一文件上多次使用 fs.write 而不等待回调是不安全的。对于此方案,强烈建议使用 fs.createWriteStream。

所以我相信使用流是最好的,但是,我不确定在继续循环中的下一次迭代之前,是否保证数据块被成功写入。 我应该怎么做?谢谢。

我认为对于

当前流和您在 2015 年拥有的流,写入从来都不是异步并行的。写入流在内存中有一个缓冲区,您可以写入该缓冲区,而不是直接写入硬盘。缓冲液将使您的序列保持正确的顺序。

您可以通过使用没有回调问题的fs.writeSync来避免使用fs.createWriteStream

,例如fs.write

相关内容

  • 没有找到相关文章