如何在循环中使用可写Streams在Node中顺序写入stream?
我想通过一个循环以特定的顺序将行追加到Node中的可写入stream文件中。
以下是我正在谈论的简化版本:
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
是asynchronous的,这意味着文件可能被乱序写入 – 这是正确的吗?
我从节点文档中看到
请注意,在不等待callback的情况下,在同一个文件上多次使用fs.write是不安全的。 对于这种情况,强烈build议使用fs.createWriteStream。
所以我相信使用stream是最好的,但是,我不确定是否确保数据块成功写入循环中的下一个迭代之前。 我应该怎么做呢? 谢谢。
你可以通过使用fs.writeSync
来避免使用fs.createWriteStream
,它没有像fs.write
这样的callback问题