Lecture de fichiers texte ligne par ligne dans Node.js
Lecture d'un gros fichier texte une ligne à la fois dans Node.js peut être une opération cruciale pour traiter de vastes ensembles de données. Alors que la question que vous avez mentionnée sur Quora aborde la lecture depuis STDIN, cet article se concentre sur l'extension de ce concept à la lecture à partir d'un fichier texte.
L'approche initiale, impliquant fs.open, sert de base. L'étape manquante consiste à exploiter le module Lazy pour effectuer une lecture ligne par ligne à partir du descripteur de fichier ouvert. Cependant, depuis Node.js v0.12, il existe une solution plus robuste utilisant le module principal readline intégré.
Explorons deux approches utilisant 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();
Alternativement, vous peut utiliser :
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'); });
Les deux approches exploitent le module readline pour lire efficacement les lignes d'un fichier texte une par une. La dernière ligne est lue correctement (à partir de Node v0.12 ou version ultérieure), même s'il n'y a pas de saut de ligne final.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!