Heim > Backend-Entwicklung > Golang > Eine Datei Zeile für Zeile in node.js lesen?

Eine Datei Zeile für Zeile in node.js lesen?

王林
Freigeben: 2024-02-05 23:00:04
nach vorne
720 Leute haben es durchsucht

Eine Datei Zeile für Zeile in node.js lesen?

Frageninhalt

Ich versuche, eine große Datei Zeile für Zeile zu lesen. Ich habe auf Quora eine Frage zu diesem Thema gefunden, aber mir fehlen einige Zusammenhänge, um das Ganze zusammenzufügen.

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

Ich versuche herauszufinden, wie man Zeile für Zeile aus einer Datei liest, anstatt wie in diesem Beispiel von STDIN zu lesen.

Ich habe versucht:

fs.open('./VeryBigFile.csv', 'r', '0666', Process);

 function Process(err, fd) {
    if (err) throw err;
    // DO lazy read 
 }
Nach dem Login kopieren

Aber es funktioniert nicht. Ich weiß, dass ich zur Not auf PHP oder so zurückgreifen könnte, aber ich möchte das herausfinden.

Ich denke, die andere Antwort wird nicht funktionieren, weil die Datei viel größer ist als der Speicher des Servers, auf dem ich sie ausführe.


Richtige Antwort


Seit Node.js v0.12 und Node.js v4.0.0 gibt es ein stabiles readline-Kernmodul. Dies ist die einfachste Möglichkeit, Zeilen aus einer Datei ohne externe Module zu lesen:

<code>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
  });
  // Note: we use the crlfDelay option to recognize all instances of CR LF
  // ('\r\n') in input.txt as a single line break.

  for await (const line of rl) {
    // Each line in input.txt will be successively available here as `line`.
    console.log(`Line from file: ${line}`);
  }
}

processLineByLine();
</code>
Nach dem Login kopieren

oder:

var lineReader = require('readline').createInterface({
  input: require('fs').createReadStream('file.in')
});

lineReader.on('line', function (line) {
  console.log('Line from file:', line);
});

lineReader.on('close', function () {
    console.log('all done, son');
});
Nach dem Login kopieren

Die letzte Zeile wird auch ohne das Finale korrekt gelesen n (ab Node v0.12 oder höher).

Update: Dieses Beispiel wurde zur offiziellen API-Dokumentation von Node hinzugefügt .

Das obige ist der detaillierte Inhalt vonEine Datei Zeile für Zeile in node.js lesen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage