Soalan ini meneroka pembacaan fail besar yang cekap satu baris pada satu masa dalam Node.js. Walaupun contoh Quora yang disediakan menunjukkan ini untuk input STDIN, penukaran kepada pendekatan berasaskan fail memerlukan pertimbangan yang teliti.
Percubaan untuk membaca baris menggunakan fs.open() dan process.stdin akan gagal kerana fs.open () tidak menyediakan antara muka penstriman seperti process.stdin. Untuk menyelesaikan masalah ini, kami boleh menggunakan modul teras baris baca yang diperkenalkan dalam Node.js v0.12.
Modul baris baca menyediakan cara yang mudah untuk memproses fail besar berturut-turut -garisan tidak segerak. Berikut ialah contoh:
const fs = require('fs'); const readline = require('readline'); async function processLineByLine() { const fileStream = fs.createReadStream('input.txt'); const rl = readline.createInterface({ input: fileStream, crlfDelay: Infinity // Handle CR LF as a single line break }); for await (const line of rl) { console.log(`Line from file: ${line}`); } } processLineByLine();
Sebagai alternatif, modul readline juga boleh digunakan secara segerak:
const lineReader = require('readline').createInterface({ input: fs.createReadStream('file.in') }); lineReader.on('line', (line) => { console.log('Line from file:', line); }); lineReader.on('close', () => { console.log('all done'); });
Dalam contoh ini, lineReader memancarkan peristiwa 'baris' untuk setiap baris dalam fail dan acara 'tutup' apabila semua baris telah diproses.
Nota: Dokumentasi rasmi Node.js kini termasuk contoh yang serupa dengan yang di atas.
Atas ialah kandungan terperinci Bagaimana Cara Membaca Fail Besar Secara Cekap Baris demi Baris dalam Node.js?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!