2016-12-13 4 views
0

Ich bin neu in diesem Javascript, also eine einfache Frage zu stellen. Ich benutze Node.js, um eine Datei des folgenden Formats zu lesen.Wie man Datei liest und 'EOF' vermeidet?

NAME : noname 
TYPE : filetype 
lines : 15000 
1 24 12 
2 12 33 
3 63 00 
4 .. .. 
.............. 
150000 16 91 
EOF 
'an empty line here' 

Mein Code ist

var fs = require('fs'); 
if (fs.existsSync(filepath)) 
{ 
    var data_array = fs.readFileSync(filepath).toString().split("\n"); 

    //to check if it is reading correctly 
    console.log(data_array[0]); 
    console.log(data_array[1]); 
    console.log(data_array[2]); 
    console.log(data_array.length.toString()); 

} 

aber ich erkennen, dass es auch nach, dass ‚EOF‘ Linie und die leere Zeile liest. Ich möchte es stoppen, wenn 'EOF' erreicht wird.

Wie geht das?

+0

Sie können einfach die letzten Elemente im Array entfernen. Aber ich würde nicht darauf eingehen, denn wenn man 200 Dateien liest, gibt es vielleicht 40 Dateien, die diese letzte leere Zeile nicht haben. Halte es einfach und nicht zu streng. Ignoriere einfach leere Zeilen. – DanFromGermany

+0

@DanFromGermany liest es auch das 'EOF'. Ja, das Entfernen von 2 letzten Zeilen aus dem Array ist am einfachsten, aber ich frage mich, ob es eine einfache Lösung gibt, um diese letzten 2 Zeilen zu vermeiden. – arslan

+0

Der beste Weg besteht darin, Ihr Skript so zu erstellen, dass nur die Informationen verwendet werden, mit denen es arbeiten kann, und den Rest ignorieren. – DanFromGermany

Antwort

0

Wenn das "EOF" für Ihre Geschäftslogik wichtig ist und danach "alles" ignoriert werden soll, benötigen Sie einen benutzerdefinierten Code, um dies zu erreichen. Die Datei (und der Code des Dateilesers im Knoten) erkennt jedoch automatisch den EOF-Marker, der in der Datei verfügbar ist, ohne dass Sie einen explizit hinzufügen müssen. Wenn das ausreichen würde, könnten Sie tatsächlich alles einschließlich EOF herausnehmen und einfach dem Standardverfahren folgen.

Es mag trivial und einfach aussehen, aber auf diese Weise basierend auf Ihrem eigenen Vorbehalt bezüglich Ihres Erfahrungslevels in Javascript antworten.

Hoffe, das hilft.

+0

Ich denke, er hat eine Zeichenfolge "EOF" nicht das echte EOF-Symbol, das man erwarten könnte. Denn wenn es ein echtes EOF wäre, gäbe es danach keine Leerzeile mehr. – DanFromGermany