2012-04-07 14 views
3

Ich versuche, eine große Textdatei (4000+ Zeilen) zu lesen und jede Zeile an die Konsole auszugeben. Ich verwende den folgenden CodeBeim Lesen einer Textdatei liest es nur einige davon

 using (var reader = new StreamReader("list1.txt")) 
     { 
      while (!reader.EndOfStream) 
       Console.WriteLine(reader.ReadLine().Trim()); 
     } 

     Console.Read(); 

Diese die Zeilen lesen, aber das Problem ist das Lesen von Zeile 4113 beginnt, wenn es von der Leitung einer richtigen Start werden sollte? Das bedeutet, dass ich nur etwa 100 Zeilen aus der Textdatei bekomme. Warum würde das passieren?

Danke.

+6

Das ist wie es funktionieren sollte aussieht. Bist du sicher, dass es nicht nur über den Scroll-Puffer des Konsolenfensters scrollt? – Robaticus

+0

Wie würde ich das überprüfen? –

+0

Ah ja, ich habe die Pufferhöhe geändert, um den Zeilen Text zu entsprechen .. Arbeitet jetzt Danke :) –

Antwort

2

Sie können feststellen, dass das Ausgabefenster nur die letzten N Zeilen anzeigt, wobei N etwa 100 ist. Mit anderen Worten ist der Scrollback-Puffer kleiner als Sie denken.

Sie können dies überprüfen, indem Sie den Code, um etwas wie das Ändern:

int numlines = 0; 
using (var reader = new StreamReader("list1.txt")) { 
    while (!reader.EndOfStream) { 
     Console.WriteLine(reader.ReadLine().Trim()); 
     numlines++; 
    } 
} 
Console.WriteLine("Wrote " + numlines + " lines."); 
Console.Read(); 

die folgende Ausgabe der Anzahl der Zeilen am Ende verarbeitet.

Sie können Änderung die Konsole Höhe mit einem Befehl wie:

Console.BufferHeight = 30000; 
2

Wie von einem Benutzer vorgeschlagen, musste ich die Pufferhöhe erhöhen, um die Textzeilen zu akomodieren.