Node.js でファイルを一行ずつ読み込む

fs.ReadStream だけを使う方法が Stack Overflow にあるけど、readline で簡単にできた。ライブラリを使うなら byline を使うとよさそう。

var fs = require('fs'),
    readline = require('readline'),
    rs = fs.ReadStream('readline.js'),
    rl = readline.createInterface({'input': rs, 'output': {}});

var i = 0;
rl.on('line', function (line) {
    console.log(i++ + ': ' + line.trim());
});
rl.resume();
% node readline.js
0: var fs = require('fs'),
1: readline = require('readline'),
2: rs = fs.ReadStream('readline.js'),
3: rl = readline.createInterface({'input': rs, 'output': {}});
4: 
5: var i = 0;
6: rl.on('line', function (line) {
7: console.log(i++ + ': ' + line.trim());
8: });
9: rl.resume();

readline.createInterface の output は writableStream を受け取るので、writableStream を継承したオブジェクトを作ってもいいけど、大げさな場合が多いと思う。
ファイルが大きくないなら全部読み込んで改行で分割したほうが早い。

http://nodejs.org/api/readline.html
http://nodejs.org/api/stream.html#stream_writable_stream