我想通过循环将行附加到 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