我希望能通过循环在Node中将行追加到一个可写流文件中,并实现特定的顺序。下面是一个简化版的示例:
我需要文件按顺序写入,即按顺序写入
我从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...等等
。 我的理解是outfile.write
是异步的,这意味着可能会导致文件无序写入——这是正确的吗?我从Node文档中看到:
所以我认为使用流是最好的选择,但是,我不确定如何在进行循环中的下一次迭代之前保证数据块已经成功写入。 我应该如何做?谢谢。请注意,在不等待回调的情况下多次使用fs.write写入同一文件是不安全的。对于这种情况,强烈建议使用fs.createWriteStream。
Writable
对象被设计用于编写顺序数据。这就是为什么它被称为“流”,所以当你可以利用流功能时使用writeSync()是愚蠢的。 - Nulik