Ich versuche, eine große Datei zeilenweise zu lesen. Ich habe eine Frage zu Quora gefunden , die sich mit dem Thema befasst, aber mir fehlen einige Verbindungen, um das Ganze zusammenzufügen.
var Lazy=require("lazy");
new Lazy(process.stdin)
.lines
.forEach(
function(line) {
console.log(line.toString());
}
);
process.stdin.resume();
Das Bit, das ich herausfinden möchte, ist, wie ich eine Zeile nach der anderen aus einer Datei anstelle von STDIN wie in diesem Beispiel lesen kann.
Ich habe es versucht:
fs.open('./VeryBigFile.csv', 'r', '0666', Process);
function Process(err, fd) {
if (err) throw err;
// DO lazy read
}
aber es funktioniert nicht. Ich weiß, dass ich zur Not auf etwas wie PHP zurückgreifen könnte, aber ich würde das gerne herausfinden.
Ich glaube nicht, dass die andere Antwort funktionieren würde, da die Datei viel größer ist als der Server, auf dem ich sie ausführe, über Speicher verfügt.
if (line.length==1 && line[0] == 48) special(line);
node
den API-Dokumenten github.com/nodejs/node/pull/4609
fs.readSync()
. Sie können binäre Oktette in einen Puffer lesen, aber es gibt keine einfache Möglichkeit, mit partiellen UTF-8- oder UTF-16-Zeichen umzugehen, ohne den Puffer zu überprüfen, bevor Sie ihn in JavaScript-Zeichenfolgen übersetzen und nach EOLs suchen. DerBuffer()
Typ verfügt nicht über so viele Funktionen, die auf seinen Instanzen ausgeführt werden können wie native Zeichenfolgen, aber native Zeichenfolgen können keine Binärdaten enthalten. Es scheint mir, dass das Fehlen einer integrierten Methode zum Lesen von Textzeilen aus beliebigen Dateihandles eine echte Lücke in node.js darstellt.