Nur letzte Zeile von Textdatei lesen (C#)

Gast
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
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
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
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?
Gast
neuling schrieb:
> Damit funktioniert es so wie ich es möchte:
> string lastLine = System.IO.File.ReadLines("test.txt").Last();

naja, hoffentlich wird die Daten nicht mehr sehr groß. Hier wird alles 
in den RAM geladen was in der Datei steht.
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

Eine eigene Frage? Dieser Thread ist über 11 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.