3

我目前正在使用 Node.js,并且想知道如何从大型文本文件中读取一系列行。一个明显的解决方案是这样的:

var fs = require('fs');
fs.readFile(file, function(err, data) {
  var lines = data.split('\n');
});

但是,这将涉及将整个文件加载到内存中,这对于大型文本文件(例如 100MB 以上的文件)是不切实际的。

在 Bash 中,我通常会使用sed这种情况。

4

1 回答 1

4

懒惰:_

var fs   = require('fs'),
    lazy = require('lazy');

var x = 23;
var y = 42;
var lines = (
   lazy(fs.createReadStream('./large.txt'))
     .lines
     .skip(x - 1)
     .take(y - x + 1)
);
lines.forEach(function(line) {
    console.log(line.toString('utf-8'));
});
于 2012-08-12T21:55:52.180 回答