如何在NodeJS中以一定间隔从文件加载行而不将整个文件加载到内存中?

时间:2015-10-12 01:04:05

标签: node.js file-io setinterval

我对Node不是很有经验,但我想一次加载一行文件并处理它,有两个特殊约束:

  • 我不想将整个文件加载到内存中(可能很大)
  • 我想处理每一行约一秒钟。理想情况下,在100ms和2000ms之间的随机间隔

或者另一种查看问题的方法:我想将文件视为测试数据流。

到目前为止,我发现的所有内容似乎都涉及将整个事物一次性加载到一个数组中,或者逐行加载它,但是很快就会这样做。

1 个答案:

答案 0 :(得分:0)

嗯,刚刚发现了这个。 Dunno,如果有更好的方法,但使用line-by-line似乎非常简单:

var Random = require('random-js')();
var LineByLineReader = require('line-by-line'), lr = new LineByLineReader(filename);

lr.on('line', function (line) {
    lr.pause(); // this blocks so the next line won't read right away.

    sendToStream(line);
    setTimeout(function () {
        lr.resume(); // resume after random interval
    }, Random.integer(100, 2000));
});