次のようなコマンドライン呼び出しを使用して、nodeでテキストファイルを処理しようとしています。
node app.js < input.txt
ファイルの各行は個別に処理する必要がありますが、一度処理すると、入力行を忘れることがあります。
stdinのオンデータリスナーを使用して、バイトサイズでチャンクされた入力ストリームを取得するため、これを設定します。
process.stdin.resume();
process.stdin.setEncoding('utf8');
var lingeringLine = "";
process.stdin.on('data', function(chunk) {
lines = chunk.split("\n");
lines[0] = lingeringLine + lines[0];
lingeringLine = lines.pop();
lines.forEach(processLine);
});
process.stdin.on('end', function() {
processLine(lingeringLine);
});
しかし、これはとてもずさんなようです。行配列の最初と最後のアイテムの周りをマッサージする必要があります。これを行うよりエレガントな方法はありませんか?