Hallo zusammen,
erst mal als Basisinfo: ich bin neu unterwegs mit c#, programmiere aber seit Jahren in diversen anderen Sprachen. Nun hab ich folgendes Problem: ich muss ein sehr großes Logfile parsen, ca 12 Mio Zeilen.
Nun verwende ich die Klasse StreamReader. Bei kleinen Testdateien läuft alles super. Bei den großen realen Exemplaren ist allerdings nach ca 6,7 Mio Zeilen Schluss.
Fehler: Array Index out of range.
Das Problem ist, es muss ein klasseninterner Index sein, der da voll läuft, da ich selber keinen Index oder ein Array verwende.
Frage: Kennt jemand das Problem?
Frage: Gibt es eine einfache Möglichkeit, eine Datei wirklich Zeilenweise zu lesen, ohne dass ein Puffer (außer einer meiner Wahl) beschrieben wird. ?
Ich bin dankbar für alle Tipps.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28:
| private void readFile() { string line = ""; if ((char)this.stream.Peek()=='T') { this.stream.ReadLine(); }
uint linecounter=0; while((line = this.stream.ReadLine())!=null) { linecounter++;
if (linecounter %100000 == 0) { this.stream.DiscardBufferedData(); Console.WriteLine(linecounter); } if (!(line.StartsWith("\t")) && (Char.IsDigit(line[0]))) {
this.data.numberofcalls++; } } this.stream.Dispose(); this.stream.Close(); } |