Entwickler-Ecke

Basistechnologien - Dateien/Texte speichern/laden


Jamez - Do 10.12.09 23:07
Titel: Dateien/Texte speichern/laden
Gibt es eine Möglichkeit nur eine Zeile aus einer Textdatei zu laden bzw. zu speichern ?

Nehmen wir mal an im Text steht:


a,
b,
c,
d,
e,
f,
g,
.,
..

und ich möchte gerne nur die dritte Zeile sprich: c oder c, in einen String laden, ist das möglich ?


mfG


Christian S. - Do 10.12.09 23:30

Hallo!

Du kannst Dateien zeilenweise mit einem StreamReader lesen und einfach bei der gewünschten Zeile aufhören:

Zuerst erzeugst Du einen entsprechenden StreamReader, indem Du den Konstruktor einfach mit dem Dateinamen der Datei aufrufst, die Du lesen willst.
Dann benutzt Du eine while-Schleife, die so lange läuft, bis das Ende des Streams (EndOfStream-Eigenschaft Deines StreamReaders) erreicht ist. Innerhalb der Schleife rufst Du jedes Mal die ReadLine-Methode auf und (wichtig!) zählst mit wie oft Du das schon getan hast. Wenn Du die entsprechende Zeile erreicht hast, kannst Du die Schleife abbrechen und hast Deine Zeile :-)

Grüße
Christian


Jamez - Fr 11.12.09 01:08

Hört sich ein bisschen kompliziert an, aber werde morgen mal ein bisschen rumprobieren ^^


Flitzs - Sa 12.12.09 00:10

Hallo!

Eine Lösung via LINQ könnte in etwa so aussehen:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
var lines = System.IO.File.ReadAllLines("myfile.txt"//Liest alle Zeilen aus der Datei                                              
                      .Skip(3)     //Überspringt die ersten 3 Zeilen
                      .Take(2);    //Selektiert 2 Zeilen (also hier Zeile 4 und 5)

Console.WriteLine("Gelesene Zeilen:");
foreach (var l in lines)
    Console.WriteLine(l);


Mit freundlichen Grüßen
Flitzs


Christian S. - Sa 12.12.09 00:15

Da liest Du aber trotzdem erstmal die ganze Datei ein, weshalb ich ReadAllLines direkt verworfen habe. Das ist noch weiter entfernt von der Antwort auf die Frage, wie man nur eine Zeile aus einer Datei lesen, als meine Antwort. :nixweiss:


Flitzs - Sa 12.12.09 00:36

Da hast du natürlich Recht, bei größeren Daten verliere ich hier performance. Aber bei Datein die so groß sind, würde man das sowiso anders organisieren und ich hab meine Lösung gepostet weil Sie einfach zu lesen und implementieren ist und eine Alternative zu deiner darstellt...