2015-11-10 38 views
2

在Python中,我們可以在一個文件一行一行在一個非常整潔的方式閱讀:的NodeJS:如何逐行讀取文件中的行如同在Python

with open("filename") as fp: 
    for line in fp: 
     #handle your line 

只是好奇是否存在的NodeJS類似的方式/ JavaScript來實現這一點。

中的NodeJS/JavaScript中的最接近的方法,我知道的是:

var fs = require('fs'); 
var readline = require('readline'); 
var stream = require('stream'); 

var instream = fs.createReadStream("filename"); 
var outstream = new stream; 
var rl = readline.createInterface(instream, outstream); 

rl.on('line', function(line) { 
    // handle your line here 
}); 

感謝

德里克

+0

您可以讀取整個文件,然後通過換行符和循環將其分開。 – Ziki

+0

https://www.npmjs.com/package/line-by-line –

+0

@Ziki,如果文件很大,可能會很快耗盡內存。 – derek

回答

2

我會建議使用line-by-line NPM

它是用於讀取大文件有用它不會緩衝文件數據。

它在接收到數據塊時暫停流,爲當前塊中的所有行發出事件,保留最後一行的剩餘部分。然後它恢復流並將剩餘部分與新塊合併並重復該過程。

您可以從here

下面檢查它的源代碼,是示例代碼片段:

var LineByLineReader = require('line-by-line'), 
    lr = new LineByLineReader('big_file.txt'); 

lr.on('error', function (err) { 
    // 'err' contains error object 
}); 

lr.on('line', function (line) { 
    // pause emitting of lines... 
    lr.pause(); 

    // ...do your asynchronous line processing.. 
    setTimeout(function() { 

     // ...and continue emitting lines. 
     lr.resume(); 
    }, 100); 
}); 

lr.on('end', function() { 
    // All lines are read, file is closed now. 
});