Heyho,
ich arbeite an einem Textbearbeitungsprogramm welches eine .txt einlädt, die stetig wächst. Da ich nur die letzten Zeilen aus der Textdatei benötige, möchte ich die einzelnen Bytes mittels FileStream lesen.
Mein bisheriger Code sieht wie folgt aus:
[highlight=c#] FileStream fs = new FileStream(@path, FileMode.Open);
string last_lines = "";
int datei_ende = Convert.ToInt32(fs.Length);
byte[] buffer = new byte[1024];
fs.Read(buffer, datei_ende-1024, buffer.Length);
for (int i = buffer.Length - 1; i >= 0; i--)
{
last_lines = Convert.ToChar(buffer[i]) + last_lines;
}
richTextBox1.Text = last_lines;[/highlight]
Ich komme mit der FileStream-Read-Methode einfach nicht zu recht... Für mich bedeuten die Parameter folgendes:
1. Paramter: In welchem byte[]-Array soll der Stream gespeichert werden?
2. Parameter: Ab wann sollen die Bytes gelesen werden (offset)?
3. Paramter: Wie viele Bytes sollen ab dem Offset gelesen werden?
Ich hoffe, ich habe das so richtig verstanden. Ich verstehe nun einfach nicht, warum er nicht einfach die letzten 1024 Bytes aus dem Textdokument liest und in die Textbox schreibt.. Es tut sich einfach gar nichts.
Was mich auch verwirrt: wenn ich nun nach dem Codesnippet etwas mit der Textbox machen möchte, wie zum Beispiel die Text-Eigenschaft "Hallo!", denn wird diese nicht mal angezeigt.. Wenn ich die Eigenschaft allerdings vor dem Codesnippet anwende, denn wird mir "Hallo!" angezeigt, obwohl die Textbox danach den Text doch eigentlich von der Variablen last_lines annehmen sollte. Das ist aber eher nebensächlich und nicht so relevant.
Wenn ich den Stream wie folgt lese, denn funktioniert es auch. Jedoch liest er denn die ersten 1024 Bytes, und nicht die Letzten:
Was mache ich denn falsch? Könnt ihr mir weiter helfen?
ich arbeite an einem Textbearbeitungsprogramm welches eine .txt einlädt, die stetig wächst. Da ich nur die letzten Zeilen aus der Textdatei benötige, möchte ich die einzelnen Bytes mittels FileStream lesen.
Mein bisheriger Code sieht wie folgt aus:
[highlight=c#] FileStream fs = new FileStream(@path, FileMode.Open);
string last_lines = "";
int datei_ende = Convert.ToInt32(fs.Length);
byte[] buffer = new byte[1024];
fs.Read(buffer, datei_ende-1024, buffer.Length);
for (int i = buffer.Length - 1; i >= 0; i--)
{
last_lines = Convert.ToChar(buffer[i]) + last_lines;
}
richTextBox1.Text = last_lines;[/highlight]
Ich komme mit der FileStream-Read-Methode einfach nicht zu recht... Für mich bedeuten die Parameter folgendes:
1. Paramter: In welchem byte[]-Array soll der Stream gespeichert werden?
2. Parameter: Ab wann sollen die Bytes gelesen werden (offset)?
3. Paramter: Wie viele Bytes sollen ab dem Offset gelesen werden?
Ich hoffe, ich habe das so richtig verstanden. Ich verstehe nun einfach nicht, warum er nicht einfach die letzten 1024 Bytes aus dem Textdokument liest und in die Textbox schreibt.. Es tut sich einfach gar nichts.
Was mich auch verwirrt: wenn ich nun nach dem Codesnippet etwas mit der Textbox machen möchte, wie zum Beispiel die Text-Eigenschaft "Hallo!", denn wird diese nicht mal angezeigt.. Wenn ich die Eigenschaft allerdings vor dem Codesnippet anwende, denn wird mir "Hallo!" angezeigt, obwohl die Textbox danach den Text doch eigentlich von der Variablen last_lines annehmen sollte. Das ist aber eher nebensächlich und nicht so relevant.
Wenn ich den Stream wie folgt lese, denn funktioniert es auch. Jedoch liest er denn die ersten 1024 Bytes, und nicht die Letzten:
Code:
fs.Read(buffer, 0, buffer.Length);
Comment