Maison >interface Web >js tutoriel >Comment lire efficacement des fichiers volumineux ligne par ligne dans Node.js ?

Comment lire efficacement des fichiers volumineux ligne par ligne dans Node.js ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-28 20:09:11434parcourir

How to Efficiently Read Large Files Line by Line in Node.js?

Lecture de fichiers ligne par ligne dans Node.js

Cette question explore la lecture efficace de fichiers volumineux, une ligne à la fois, dans Node.js. Bien que l'exemple Quora fourni le démontre pour l'entrée STDIN, la conversion vers une approche basée sur des fichiers nécessite un examen attentif.

La tentative de lecture de lignes à l'aide de fs.open() et process.stdin échouera car fs.open () ne fournit pas d'interface de streaming comme process.stdin. Pour résoudre ce problème, nous pouvons utiliser le module principal readline introduit dans Node.js v0.12.

Streaming asynchrone avec readline

Le module readline fournit un moyen pratique de traiter des fichiers volumineux ligne par ligne. -line de manière asynchrone. Voici un exemple :

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();

Syntaxe alternative avec readline

Alternativement, le module readline peut également être utilisé de manière synchrone :

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');
});

Dans cet exemple, le lineReader émet des événements « ligne » pour chaque ligne du fichier et un événement « fermeture » ​​lorsque toutes les lignes ont été traité.

Remarque : La documentation officielle de Node.js inclut désormais un exemple similaire à celui ci-dessus.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn