Si vous pouvez faire tenir les données finales dans un tableau, ne pourriez-vous pas également les faire tenir dans une chaîne de caractères et les diviser, comme cela a été suggéré ? Dans tous les cas, si vous souhaitez traiter le fichier une ligne à la fois, vous pouvez également essayer quelque chose comme ceci :
var fs = require('fs');
function readLines(input, func) {
var remaining = '';
input.on('data', function(data) {
remaining += data;
var index = remaining.indexOf('\n');
while (index > -1) {
var line = remaining.substring(0, index);
remaining = remaining.substring(index + 1);
func(line);
index = remaining.indexOf('\n');
}
});
input.on('end', function() {
if (remaining.length > 0) {
func(remaining);
}
});
}
function func(data) {
console.log('Line: ' + data);
}
var input = fs.createReadStream('lines.txt');
readLines(input, func);
EDIT : (en réponse au commentaire de phopkins ) Je pense (au moins dans les versions plus récentes) que substring ne copie pas les données mais crée un objet spécial SlicedString (d'après un rapide coup d'oeil au code source de la v8). Dans tous les cas, voici une modification qui permet d'éviter le substring mentionné (testé sur un fichier de plusieurs mégaoctets de "All work and no play makes Jack a dull boy") :
function readLines(input, func) {
var remaining = '';
input.on('data', function(data) {
remaining += data;
var index = remaining.indexOf('\n');
var last = 0;
while (index > -1) {
var line = remaining.substring(last, index);
last = index + 1;
func(line);
index = remaining.indexOf('\n', last);
}
remaining = remaining.substring(last);
});
input.on('end', function() {
if (remaining.length > 0) {
func(remaining);
}
});
}
1 votes
Cette question a besoin d'être sérieusement modifiée et nettoyée. Il est écrit lire un fichier texte dans un tableau mais quand vous lisez toutes les réponses et les commentaires, cela veut dire en réalité lire un fichier texte une ligne à la fois . Pour cette question, @zswang a la meilleure réponse jusqu'à présent.
0 votes
Oui, il suffit de lire ce fichier et de mettre chaque ligne dans un tableau : stackoverflow.com/a/34033928/1536309