Lire un fichier ligne par ligne, dans node.js?

Je suis en train de lire un gros fichier, une ligne à la fois. J'ai trouvé une question sur Quora qui traitent de ce sujet mais il me manque certaines connexions de rendre l'ensemble de l'ajustement ensemble.

 var Lazy=require("lazy");
 new Lazy(process.stdin)
     .lines
     .forEach(
          function(line) { 
              console.log(line.toString()); 
          }
 );
 process.stdin.resume();

Le peu que j'aimerais savoir 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 cela ne fonctionne pas. Je sais que dans une pincée je pourrais tomber en arrière à l'aide de quelque chose comme PHP, mais je voudrais comprendre.

Je ne pense pas que l'autre réponse pourrait fonctionner comme le fichier est beaucoup plus grande que le serveur, je suis en cours d'exécution sur a de la mémoire pour.

  • Cela s'avère très difficile à l'aide de bas-niveau fs.readSync(). Vous pouvez lire binaires octets dans le buffer, mais il n'y a pas de moyen facile de traiter avec partielle UTF-8 ou UTF-16 caractères sans l'inspecter la mémoire tampon avant de la traduire pour les chaînes de caractères JavaScript et de numérisation pour EOLs. Le Buffer() type n'est pas aussi riche ensemble de fonctions de fonctionner sur ses instances en tant que natif des chaînes, mais natif chaînes ne peuvent pas contenir des données binaires. Il me semble que, faute d'un moyen intégré pour lire des lignes de texte de l'arbitraire descripteurs est une vraie lacune dans la node.js.
  • Les lignes vides lue par cette méthode se transforme en une ligne avec un seul 0 (caractère réel de code pour 0) en eux. J'ai eu de hack cette ligne là: if (line.length==1 && line[0] == 48) special(line);
  • On peut aussi utiliser la "ligne par ligne" package qui fait le travail parfaitement.
  • Veuillez mettre à jour la question de dire que la solution est d'utiliser un le flux de transformation
  • Vous souhaitez mettre à jour la question avec le built-in moyen de lire les lignes d'un fichier comme de Nœud v0.12.
  • si vous le souhaitez, vous pouvez rajouter à la liste: votre exemple a atterri légèrement modifiée dans node's de l'API docs github.com/nodejs/node/pull/4609
  • C'est assez cool! Merci pour le faire 🙂
  • bienvenue. 🙂 Ce message a été vraiment utile, alors...
  • Voir aussi Quora: quora.com/...

InformationsquelleAutor Alex C | 2011-05-27