Nur letzte Zeile von Textdatei lesen (C#)

Gast #4026268
Lesenswert?

In einer while Schleife zähle ich einen Counter hoch bis die letzte 
Zeile erreicht wird. Gibt es noch einen anderen Weg?
1
FileStream fs = new FileStream(datei, FileMode.Open, FileAccess.Read, FileShare.Write);
2
using (StreamReader sr = new StreamReader(fs, System.Text.Encoding.Default))
3
{
4
  while (sr.ReadLine() != null)
5
  {
6
    Counter = Counter + 1;
7
  }
8
  Counter = Counter  - 1;
9
}
Gast #4026276
Lesenswert?

Einfach jede Zeile in die Variable einlesen.
Der letzte Eintrag ist dann die letzte Zeile.

neuling schrieb:
> In einer while Schleife zähle ich einen Counter hoch bis die letzte
> Zeile erreicht wird. Gibt es noch einen anderen Weg?

Wozu? Willst du die Anzahl der Zeilen wissen?
Gast #4026285
Lesenswert?

In der Textdatei habe ich eine fortlaufende Nummer. Wenn ich die 
Applikation neu starte, soll das Speichern ab der letzten Nummer von der 
Textdatei erfolgen. Was ich eigentlich möchte ist, dass ich NUR die 
letzte Zeile von der Textdatei auslesen möchte. Wie könnte dies 
umgesetzt werden?
Gast #4026287
Lesenswert?

Oder vom Ende der Datei ein Stück lesen und dann den String oder das 
Array von hinten nach Newlines durchsuchen. Ich gehe jetzt mal von 1 
Byte pro Zeichen in der Datei aus, weil du zum Format nichts schreibst.
BTW: Suchst du nun - wie oben angegeben - die letzte Zeile oder den 
Index der letzten Zeile bzw. die Anzahl der Zeilen?
#4026381
Lesenswert?

neuling schrieb:
> Damit funktioniert es so wie ich es möchte:

Ok. Es sei allerdings dazu gesagt, dass die Lösung zwar diese 
Anforderung erfüllt:

Neuling schrieb:
> ich möchte von einer Textdatei nur die letzte Zeile in eine string
> Variable auslesen können.

Folgende (von dir erst später erwähnte :) ) jedoch nicht:

neuling schrieb:
> Was ich eigentlich möchte ist, dass ich NUR die
> letzte Zeile von der Textdatei auslesen möchte.

Die letzte Zeile landet zwar in der Variablen, im Hintergrund wird aber 
dennoch alles eingelesen.
1
System.IO.File.ReadLines("test.txt")
liefert ein String-Array mit allen Zeilen zurück, das angehängte 
".Last()" gibt dir dann nur dessen letztes Element.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren