Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Membaca Baris Fail Teks Besar dengan Cekap dengan Baris dalam Node.js?
Membaca Fail Teks Baris demi Baris dalam Node.js
membaca fail teks besar satu baris pada satu masa dalam Node.js boleh menjadi operasi penting untuk memproses set data yang luas. Walaupun soalan yang anda sebutkan daripada Quora menangani pembacaan daripada STDIN, artikel ini memfokuskan pada meluaskan konsep ini kepada membaca daripada fail teks.
Pendekatan awal, yang melibatkan fs.open, berfungsi sebagai asas. Langkah yang hilang ialah memanfaatkan modul Lazy untuk melaksanakan bacaan baris demi baris daripada deskriptor fail yang dibuka. Walau bagaimanapun, sejak Node.js v0.12, terdapat penyelesaian yang lebih mantap menggunakan modul teras baris baca terbina dalam.
Mari terokai dua pendekatan menggunakan readline:
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 }); // Note: we use the crlfDelay option to recognize all instances of CR LF // ('\r\n') in input.txt as a single line break. for await (const line of rl) { // Each line in input.txt will be successively available here as `line`. console.log(`Line from file: ${line}`); } } processLineByLine();
Sebagai alternatif, anda boleh menggunakan:
var lineReader = require('readline').createInterface({ input: require('fs').createReadStream('file.in') }); lineReader.on('line', function (line) { console.log('Line from file:', line); }); lineReader.on('close', function () { console.log('all done, son'); });
Kedua-dua pendekatan memanfaatkan modul baris baca untuk membaca baris secara berkesan daripada fail teks satu pada satu masa. Baris terakhir dibaca dengan betul (setakat Node v0.12 atau lebih baru), walaupun tiada pemisah baris akhir.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membaca Baris Fail Teks Besar dengan Cekap dengan Baris dalam Node.js?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!