2016-10-18 2 views
-2

Ich bin ziemlich neu mit Node.js.Knoten js Dateien Zeile für Zeile lesen

Es gibt einen Ordner auf meinem Computer, wo ich mehrere Textdateien (.fw4 Format) habe. Ich konnte alle Textdateien mit dem Modul node-dir finden.

Darüber hinaus muss ich einige Inhalte jeder Datei aus bestimmten Spalten abrufen. Eigentlich funktioniert dieser Algorithmus gut mit dem readline Modul.

Ich halte meinen Dateinamen in einem Array. Etwas wie dieses: [ '000037592.fw4', '000037593.fw4', '000037594.fw4' ]

Was brauche ich eigentlich? Ich möchte, dass das ganze System synchron arbeitet und wenn ich den ersten Dateiinhalt (000037592.fw4) bekomme, würde es etwas wie das Ende der Datei protokollieren. Und es liest weiterhin die anderen Dateien aus dem Array.

Bis jetzt hat es nicht funktioniert, wie ich wollte.

Vielen Dank im Voraus. Ich würde mich über jeden Vorschlag freuen, wie ich eine Lösung für mein Problem finden kann.

+0

hier ähnlich http://stackoverflow.com/questions/35823727/returning-the-content-of-multiple-files-in-node-js – masif

Antwort

0

Sie so etwas wie:

var fileArray = [ '000037592.fw4', '000037593.fw4', '000037594.fw4' ]; 
var i = 0; 
readNextFile(); 

function readNextFile(){ 
    fs.readFile(fileArray[i++], function(result){ 
     handleResult(result); 

     if(i < fileArray.length){ 
      readNextFile(); 
     } 
    }); 
} 
+0

Danke für Ihr Lösung. Ich komme näher, um meine Aufgabe zu lösen. –

+0

Wie kann ich den Inhalt jeder Datei auf die Konsole schreiben? Es ist notwendig, denn später muss ich die Dateien an den Server senden ... Ich möchte etwas wie, wenn es das Lesen der ersten Datei fertig ist, schreibe auf die Konsole: "Ende der ersten Datei lesen" .. und so weiter .. –

+0

@ NagyGergő Ich bin froh, dass ich dir geholfen habe. Sie müssen zuerst meine Antwort als angenommene Antwort markieren (klicken Sie auf das V auf der linken Seite), und Sie können auch wählen (klicken Sie auf den Pfeil nach oben auf der linken Seite). Für jedes andere Problem, das Sie haben, öffnen Sie bitte eine neue Frage. Beachten Sie, dass Sie durch die Annahme einer Antwort Reputationspunkte erhalten, die Ihnen einige Privilegien auf dieser Site geben. Sie schreiben in die Konsole mit dem Befehl "console.log()". – Alon