Autor Beitrag
Jamez
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Do 10.12.09 23:07 
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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Jamez Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Fr 11.12.09 01:08 
Hört sich ein bisschen kompliziert an, aber werde morgen mal ein bisschen rumprobieren ^^
Flitzs
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 123
Erhaltene Danke: 7

Win7 x64/86 WinServer 2008 R2 x64
C#/C++/C VS2010
BeitragVerfasst: Sa 12.12.09 00:10 
Hallo!

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

ausblenden 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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:

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Flitzs
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 123
Erhaltene Danke: 7

Win7 x64/86 WinServer 2008 R2 x64
C#/C++/C VS2010
BeitragVerfasst: 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...