Jika Anda bisa memasukkan data akhir ke dalam sebuah array maka bukankah Anda juga bisa memasukkannya ke dalam sebuah string dan membaginya, seperti yang telah disarankan? Dalam hal apa pun jika Anda ingin memproses file satu baris pada satu waktu Anda juga dapat mencoba sesuatu seperti ini:
var fs = require('fs');
function readLines(input, func) {
var remaining = '';
input.on('data', function(data) {
remaining += data;
var index = remaining.indexOf('\n');
while (index > -1) {
var line = remaining.substring(0, index);
remaining = remaining.substring(index + 1);
func(line);
index = remaining.indexOf('\n');
}
});
input.on('end', function() {
if (remaining.length > 0) {
func(remaining);
}
});
}
function func(data) {
console.log('Line: ' + data);
}
var input = fs.createReadStream('lines.txt');
readLines(input, func);
EDIT: (dalam menanggapi komentar oleh phopkins ) Saya pikir (setidaknya dalam versi yang lebih baru) substring tidak menyalin data tetapi membuat objek SlicedString khusus (dari pandangan sekilas pada kode sumber v8). Dalam hal apa pun di sini adalah modifikasi yang menghindari substring yang disebutkan (diuji pada file beberapa megabyte senilai "Semua pekerjaan dan tidak ada permainan membuat Jack menjadi anak yang membosankan"):
function readLines(input, func) {
var remaining = '';
input.on('data', function(data) {
remaining += data;
var index = remaining.indexOf('\n');
var last = 0;
while (index > -1) {
var line = remaining.substring(last, index);
last = index + 1;
func(line);
index = remaining.indexOf('\n', last);
}
remaining = remaining.substring(last);
});
input.on('end', function() {
if (remaining.length > 0) {
func(remaining);
}
});
}