Eine bestimmte zeile lesen mit dem StreamReader
-
Hallo Community,
ich muss auf bestimmte zeilen einer Datei zugreifen...
while ((Zeile = sr.ReadLine()) != null) { }
ist keine Lösung da ich alle Zeilen durchlaufe... gibt es eine möglichkeit direkt auf eine Zeile zurück zu greifen?
Gruß
-
string[] lines = System.IO.File.ReadAllLines("path.txt");
-
MOGnew schrieb:
gibt es eine möglichkeit direkt auf eine Zeile zurück zu greifen?
Nein. Dateien sind stets zeichenbasiert abgelegt, d.h. der einzige Zugriff erfolg über Zeichen und -Positionen. Das Konzept von Zeilen ist Dateien unbekannt. Für kleinere Dateien ist daher die Lösung von cs-freak die beste, bei größeren Dateien ist Deine am besten, wenn man sie mit einem Zähler koppelt:
public string ReadLine(System.IO.StreamReader reader, int lineNumber) { reader.BaseStream.Position = 0; string line; int i = 0; while ((line = reader.ReadLine()) != null) if (++i == lineNumber) return line; throw new IndexOutOfRangeException(); }
-
Vielen Dank für die Antworten,
also ich habe die Sachen umgesetzt aber bin immer noch nicht mit dem Resulat happy.
Ich habe ca. 10000 Dateien innerhalb dieser Dateien benötige ich bestimmte informationen.Pro Datei habe ich bis zu 12000 Zeilen.
0;0;15.6639886627197
1;0.5;16.6629886627197
2;1;15.8558292388916
3;1.5;16.9698734283447
4;2;17.8742008209229
5;2.5;17.8698673248291Nun möchte ich z.B. Aus jeder Datei den Wert an der Postion 5 Wissen(17.8698673248291).... was ist die schnellste möglichkeit an diese Daten zu kommen ? Wie öffne ich schnellstmöglich 10000 Dateien nacheinander ?
Gruß
und Danke
-
MOGnew schrieb:
Nun möchte ich z.B. Aus jeder Datei den Wert an der Postion 5 Wissen(17.8698673248291).... was ist die schnellste möglichkeit an diese Daten zu kommen ? Wie öffne ich schnellstmöglich 10000 Dateien nacheinander ?
Na, das dauert nunmal. Ich denke mal, das schnellste wäre da wirklich, die nacheinander mit nem Streamreader zu öffnen und in meine Funktion zu schmeißen.
-
Schonmal in Erwägung gezogen das eine Datenbank dafür eventuel besser geeignet wäre als einzelne Dateien?
Du redest immerhin von 10k Dateien und 12k Datensätze pro Datei und brauchst gezielte Zugriffe auf einzelne Datensätze. Genau dafür wurden SQL-Datenbanken entwicklet...
-
-
geeky schrieb:
CSV-Dateien kann man dank ADO.NET wie eine Datenbank nutzen
Das betrifft dann aber nur die Schnittstelle, nicht die Effizient, bringt also gar nichts. Es stimmt schon, dass diese Größenordnungen eigentlich nach einer Datenbank rufen.
-
Hi,
darf ich hier mal vorschlagen die Daten anders zu formatieren, wenn du eh nur eine fixe Anzahl von Zahlen pro Zeile hast kannst du ja die int, float oder sonst was Daten direkt in die Datei schreiben und dann mit einem Offset auf den gewünschten Datensatz zugreifen.
-
Hallo nochmal ich prüfe gerade die möglichkeit wirklich eine DB für den Zweck einzusetzen...
Ich dachte da evt. an SQLite, weiss jemand wie viele Spalten, Zeilen und Tabellen ich in SQLite erstellen kann ?
-
ich unterstütze auch reactions posting.
scheint mir hier das effektivste zu sein. hängt aber davon ab ob man die programme welche die dateien evtl. auch noch nutzen bzw. schreiben auch ändern kann.