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