2012-08-12 2 views
2

현재 Node.js를 사용하고 있으며 대형 텍스트 파일에서 어떤 행을 읽는 지 궁금합니다. 확실한 솔루션과 같이 될 것이다 :Node.js : 효율적으로 라인 범위를 읽음

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

그러나, 그와 같은 것들 메가 바이트 +로 큰 텍스트 파일에 대한 비현실적 메모리에 전체 파일을로드 포함한다.

Bash에서는이 경우 일반적으로 sed을 사용합니다. lazy

+1

은 한 번에 하나 개의 라인을 말하거나 메모리에 모든 Y-X 라인을 읽어? –

답변

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

'lines'은 값을 검색 할 때 값이 평가되는 lazy 객체입니다. 나는 단지 선을 인쇄하는 예제를 추가했다. 당신은 그들과 함께 당신이 원하는 무엇이든 할 수 있습니다. – phihag

관련 문제