2016-07-09 8 views
0

Ich möchte fortlaufend aus einer Textdatei lesen, die von meinem Programm generiert wird. Das Problem ist, dass mein Programm nach dem ersten Parsing der Datei die letzte Zeile der Datei liest, bevor sie mit der erneuten Analyse beginnen kann, was dazu führt, dass sie unerwünschte Daten anhäuft.C# - Textdateien lesen (System IO)


3 photos: first is creating tournament and showing points, second is showing text file and the third is showing that TeamA got more 3 points

StreamReader = new StreamReader("Torneios.txt"); 

    torneios = 0; 
    while (!rd.EndOfStream) 
    { 
     string line = rd.ReadLine(); 
     if (line == "Tournament") 
     { 
      torneios++; 
     } 
     else 
     { 
      string[] arr = line.Split('-'); 
      equipaAA = arr[0]; 
      equipaBB = arr[1]; 
      res = Convert.ToChar(arr[2]); 
     } 
    } 
    rd.Close(); 

Das ist, was im Moment bin ich mit.

+1

Bitte verwenden Sie richtige Interpunktion und Grammatik, während Sie Fragen stellen und sich speziell mit dem Problem befassen. – VatsalSura

+0

Bitte lesen Sie die [Hilfe] Seite und bearbeiten Sie Ihre Frage. –

Antwort

1

Um Fehler wie diese zu vermeiden, empfehle ich File.ReadAllText oder File.ReadAllLines verwenden, wenn Sie große Dateien verwenden (in diesem Fall werden sie nicht eine gute Wahl sind), hier ein Beispiel für eine Implementierung eines solchen ist:

string result = File.ReadAllText("textfilename.txt"); 

In Bezug auf Ihre speziellen Code, ein Beispiel File.ReadAllLines verwendet, die dies erreicht ist:

string[] lines = File.ReadAllLines("textfilename.txt"); 
for(int i = 0; i < lines.Length; i++) 
{ 
    string line = lines[i]; 
    //Do whatever you want here 
} 

einfach deutlich zu machen, das ist keine gute Idee, wenn die Dateien, die Sie aus lesen möchten sind groß (wie binäre fi les).

+0

Während dies in der Tat gute Optionen für kleine Dateien sind, wenn Sie riesige Dateien lesen müssen, sind diese definitiv nicht der richtige Weg. – Prix

+0

@Prix einverstanden, wird das in die Antwort nur um es klar zu machen. –