J'essaie de lire un grand fichier une ligne à la fois. J'ai trouvé une question sur Quora qui traitaient du sujet, mais il me manque des liens pour que l'ensemble soit cohérent.
var Lazy=require("lazy");
new Lazy(process.stdin)
.lines
.forEach(
function(line) {
console.log(line.toString());
}
);
process.stdin.resume();
Ce que j'aimerais comprendre, c'est comment je pourrais lire une ligne à la fois à partir d'un fichier au lieu de STDIN comme dans cet exemple.
J'ai essayé :
fs.open('./VeryBigFile.csv', 'r', '0666', Process);
function Process(err, fd) {
if (err) throw err;
// DO lazy read
}
mais ça ne marche pas. Je sais qu'en cas de difficulté, je pourrais me rabattre sur quelque chose comme PHP, mais j'aimerais trouver une solution.
Je ne pense pas que l'autre réponse puisse fonctionner car le fichier est beaucoup plus volumineux que ce que le serveur sur lequel je l'exécute peut contenir.
3 votes
Il s'avère que cela est assez difficile en utilisant uniquement des outils de bas niveau.
fs.readSync()
. Il est possible de lire des octets binaires dans un tampon, mais il n'existe aucun moyen simple de traiter les caractères UTF-8 ou UTF-16 partiels sans inspecter le tampon avant de le traduire en chaînes JavaScript et de rechercher les EOL. Le siteBuffer()
ne dispose pas d'un ensemble aussi riche de fonctions pour opérer sur ses instances que les chaînes de caractères natives, mais les chaînes de caractères natives ne peuvent pas contenir de données binaires. Il me semble que l'absence d'un moyen intégré de lire des lignes de texte à partir de fichiers arbitraires est une véritable lacune dans node.js.5 votes
Les lignes vides lues par cette méthode sont converties en une ligne avec un seul 0 (code caractère réel pour 0). J'ai dû modifier cette ligne :
if (line.length==1 && line[0] == 48) special(line);
2 votes
On peut aussi utiliser le paquet "ligne par ligne" qui fait parfaitement l'affaire.
1 votes
Veuillez mettre à jour la question pour dire que la solution est d'utiliser une transformer le flux
0 votes
Vous pouvez mettre à jour la question avec le moyen intégré de lire les lignes d'un fichier à partir de Node v0.12.
2 votes
@DanDascalescu si tu veux tu peux ajouter ceci à la liste : ton exemple débarqué légèrement modifié en
node
Documentation de l'API github.com/nodejs/node/pull/46090 votes
@eljefedelrodeodeljefe - C'est plutôt cool ! Merci de faire ça :)
0 votes
@AlexC bienvenue. :) Ce post a été très utile, donc...
0 votes
Voir aussi Quora : quora.com/