StreamReader - Zeile mehrmals einlesen

Marcel Binder

Grünschnabel
Hallo,

in einer Datei "test.txt" stellt eine Zeile den Inhalt eines Arrays dar. Die einzelnen Werte sind durch ';' abgetrennt. Wenn ich nun die erste Zeile einlesen möchte, funktioniert das mit:
Code:
string readLine = stack.ReadLine();
string[] array = readLine.Split(';');
Wenn ich dann z.B. die 3.Zeile einlesen möchte habe ich das so gemacht:
Code:
string readLine = "";
for (byte line = 0; line < 4; line++)
     readLine = stack.ReadLine();
string[] array = readLine.Split(';');
Lese ich aber anschließend wieder die 2.Zeile ein, wird die 5.eingelesen.

Kann man bei StreamReader die Zeilennummer zurücksetzten kann, ohne die Datei neu zu öffnen?

Danke im Voraus,
Marcel
 
Hallo,

danke für deine Antwort.

Du musst dir merken, was du schon gelesen hast, oder die Datei neu lesen.
Das Merken bringt nichts, da ich deshalb die gleiche Zeile auch nicht mehrmals einlesen kann.
Es wird zuerst ein Datensatz (=Zeile) ausgewählt und die dann eingelesenen Werte über die serielle Schnittstelle ausgegeben. Daher weiß ich nicht, ob es sinnvoll ist, die Datei mehrmals pro Sekunde zu öffnen und zu schießen.
Eine Lösung, bei der man die Datei einmal öffnet und dann jede Zeile beliebig oft auslesen kann wäre mir lieber.

Marcel
 
Hallo,

danke für deine Antwort.

hier bietet sich vielleicht die Verwendung von File.ReadAllLines() an. Mit einer Codezeile liest du die Datei zeilenweise in ein String-Array ein und kannst danach (über das Array) wahlfrei auf alle Zeilen zugreifen
Das wäre eine Lösung. Leider weiß ich die größe der Datei nicht, und die müsste ich doch beim Erstellen des string-Arrays angeben. (Die Größe kann sich auch während der Laufzeit der Anwendung ändern.)

Und einer Collection würde ja die Werte intern anders anordnen, oder?

Marcel
 
Das wäre eine Lösung. Leider weiß ich die größe der Datei nicht, und die müsste ich doch beim Erstellen des string-Arrays angeben. (Die Größe kann sich auch während der Laufzeit der Anwendung ändern.)
Da musst du doch nixs angeben, außer den Pfad.

Und einer Collection würde ja die Werte intern anders anordnen, oder?
Kommt eigentlich auf die Collection an. Normalle List<T> behält aber die im verpasste Reihenfolge bei.
 
Eine bestimmte Zeile einer Textdatei überschreiben?
Geht nur, wenn die neue Zeile gleich viel Zeichen hat wie die Alte.
Also gar nicht.

Alles einlesen und neu rausschreiben,
dabei die alte Zeile weglassen und stattdessen die Neue schreiben.
 
Zurück