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
Libérer: 2024-11-28 20:09:11
original
495 Les gens l'ont consulté

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();
Copier après la connexion

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');
});
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal