2012-08-12 63 views
2

我目前正在使用Node.js,想知道如何從大文本文件讀取一系列行。一個顯而易見的解決辦法是,像這樣:Node.js:高效地讀取一系列行

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

然而,這將涉及加載整個文件到內存中,這將是不切實際的大的文本文件,比如那些100MB +。

在Bash中,我通常會在這種情況下使用sed

+1

因爲它們是較大的文件,你要流線,說在一次一行,或讀所有的Y-X線到內存? – 2012-08-12 21:52:09

回答

4

隨着lazy

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')); 
}); 
+0

'lines'是一個懶惰的對象,當您檢索它們時,會對它們的值進行評估。我添加了一個只打印行的例子。你可以做任何你想要的東西。 – phihag 2012-08-12 23:15:20