Saya mencoba membaca file besar satu per satu. Saya menemukan pertanyaan tentang Quora yang membahas masalah ini, tetapi saya kehilangan beberapa koneksi untuk membuat semuanya cocok.
var Lazy=require("lazy");
new Lazy(process.stdin)
.lines
.forEach(
function(line) {
console.log(line.toString());
}
);
process.stdin.resume();
Bagian yang ingin saya ketahui adalah bagaimana saya bisa membaca satu baris pada satu waktu dari sebuah file, bukan STDIN seperti dalam sampel ini.
Saya mencoba:
fs.open('./VeryBigFile.csv', 'r', '0666', Process);
function Process(err, fd) {
if (err) throw err;
// DO lazy read
}
tapi itu tidak berhasil. Saya tahu bahwa dalam keadaan darurat saya dapat kembali menggunakan sesuatu seperti PHP, tapi saya ingin mencari tahu.
Saya tidak berpikir jawaban lain akan bekerja karena file tersebut jauh lebih besar daripada server tempat saya menjalankannya memiliki memori.
if (line.length==1 && line[0] == 48) special(line);
node
API docs github.com/nodejs/node/pull/4609
fs.readSync()
. Anda dapat membaca oktet biner ke dalam buffer tetapi tidak ada cara mudah untuk menangani sebagian karakter UTF-8 atau UTF-16 tanpa memeriksa buffer sebelum menerjemahkannya ke string JavaScript dan memindai EOL. TheBuffer()
tipe tidak memiliki sebagai set kaya fungsi untuk beroperasi pada contoh sebagai string asli, tapi string asli tidak dapat berisi data biner. Tampaknya bagi saya bahwa kekurangan cara untuk membaca baris teks dari file arbitrer yang sewenang-wenang adalah kesenjangan nyata dalam node.js.