Laden...

Bestimmte Zeile auslesen

Erstellt von Linus vor 18 Jahren Letzter Beitrag vor 17 Jahren 18.097 Views
L
Linus Themenstarter:in
82 Beiträge seit 2005
vor 18 Jahren
Bestimmte Zeile auslesen

Tag Leute!

Kann mir wer sagen wie ich eine bestimmte Zeile, z.B. Zeile zwei, in einer Datei auslesen und auf dem Bildschirm ausgeben kann? Ich hab vor geraumer Zeit was ähnliches gemacht, dabei sah der Code wie folgt aus wobei die ganze Datei gelesen wurde:

...
using (StreamReader sc = new StreamReader("config.ini"))
using (StreamReader sn = new StreamReader("name.ini"))
...

Lieder ist das wie gesagt wieder eine Weile her und ich hab mein schlechtes Amateur-'Können' schon wieder verlernt...

Bin für jeden Rat dankbar.

THX in advance, Linus

Komm, kipps doch de Siffon rab!

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo Linus,

StreamReader.ReadLine liest eine Zeile. Durch zweifaches Aufrufen liest man die zweite Zeile.

herbivore

2.082 Beiträge seit 2005
vor 18 Jahren

Hallo Linus,

ausgeben kannst du dann die Zeile 2 mit

string Zeile = myStrReader.ReadLine();
Console.WriteLine(Zeile);

Es ist toll jemand zu sein, der nichts von der persönlichen Meinung Anderer hält. - frisch-live.de

564 Beiträge seit 2006
vor 18 Jahren

Hi Linus!

Probier es mal mit der Streamreader Methode ReadLine!
Mit der kannst du Zeile für Zeile der Datei auslesen.
Die richtige dann auszulesen ist dann nur noch eine sache der Logik.

Bei mir siehts verinfacht so aus:

FileStream fs = File.Open("C:\\Dokumente und Einstellungen\\All Users\\Desktop\\Text.txt", FileMode.Open);
            StreamReader sr = new StreamReader(fs);

            for (int i = 1; i < 4; i++)
            {
                textBox1.Text = sr.ReadLine();
            }
            fs.Close();
            sr.Close();

Der Code schreibt nacheinander alle Zeilen in die Textbox und lässt die dritte stehen...zugegeben, das ist die holzhammermethode, aber zum veranschaulichen hier reichts ja erstmal 🙂

Gruß Marcel

:] 😄Der größte Fehler eines modernen Computers sitzt meist davor 😁 :]

564 Beiträge seit 2006
vor 18 Jahren

*lol* meine Antwort war zu spät...hab den thread mal 10 Minuten nicht aktualisiert ... g

:] 😄Der größte Fehler eines modernen Computers sitzt meist davor 😁 :]

L
Linus Themenstarter:in
82 Beiträge seit 2005
vor 18 Jahren

Vielen Dank für eure schnellen Antworten!

Ich hab das bisher so:

...
using (StreamReader sc = new StreamReader("config.ini"))
{
String directory;
while ((directory = sc.ReadLine()) != null)
...

Original von herbivore
Hallo Linus,

StreamReader.ReadLine liest eine Zeile. Durch zweifaches Aufrufen liest man die zweite Zeile.

herbivore

So wie ich das sehe, hab ichs bereits so. Kann mir da wer ein Beispiel geben für eine bestimmte Zeile?

Dank auch an an Marcel, damit werd ichs auch mal versuchen, wobei ich mit deinem Code noch absolut nicht durchsteige 😉

*Linus sowas von einem Anfänger*

thx in Advance

Komm, kipps doch de Siffon rab!

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo Linus,

oh, oh, wenn du so ein großer Anfänger bist, wie du schreibst, und den relativ einfachen Code von der Marcel nicht blickst, dann solltest du dir dringend die Grundlagen mittels eines Buches aneignen. Das kann ein Forum nicht leisten.

herbivore

564 Beiträge seit 2006
vor 18 Jahren

Hi Linus,

schreib vielleicht einfach eine for-schleife mit einem Integer-Zähler, welcher bei jedem Schleifendurchlauf um eins erhöht wird. In der Schleife fragst du mit einer if-Anweisung den Zähler ab und wenn er gerade bei der zeilennummer ist, die du möchtest, schreib die Zeile einfach in die Ausgabe.

Das kann so aussehen:

FileStream fs = File.Open("C:\\Dokumente und Einstellungen\\All Users\\Desktop\\Text.txt", FileMode.Open);
            StreamReader sr = new StreamReader(fs);
            string text;

            for (int i = 0; i < 10; i++)
            {
                text = sr.ReadLine();
                if (i == 2)
                    textBox1.Text = text;//das schreibt die 3. Zeile der Datei in die Ausgabe
                if (i == 5)
                    textBox2.Text = text;//das schreibt die 6. Zeile der Datei in die Ausgabe
            }
            sr.Close();
            fs.Close();

Im Prinzip zählst du also, wie oft du ReadLine schon angewendet hast 😉

Auftretnde Fehler, die kommen, weil du mehr Zeilen auslesen möchstest, als die Datei hat, musst du natrülich auch noch behandeln 😉

Gruß, Marcel

:] 😄Der größte Fehler eines modernen Computers sitzt meist davor 😁 :]

L
Linus Themenstarter:in
82 Beiträge seit 2005
vor 18 Jahren

Gutn Morgen Leute! 🙂

Vielen Dank für eure Lösungsvorschläge. Hab alle eure Möglichkeiten eingebaut. Haben alle ihren Nutzen gefunden und dienen mir sehr als Übungsmaterial. Nun würd ich zudem gern auf eine andere Weise eine Zeile auslesen.

Nehmen wir an ich habe eine Datei in der irgendwo diese zwei Zeilen stehen

[INFO]
Testtext

Nun will ich die Zeile nach [INFO], also 'Testtext' auslesen. Wie macht man denn sowas?

Gruß, und wieder THX in advance

Komm, kipps doch de Siffon rab!

1.271 Beiträge seit 2005
vor 18 Jahren

du liest einfach solange, bis du [INFO] erreicht hast:

string head;
while (head!="[INFO]"){
    head=sr.ReadLine();
}
string value =sr.ReadLine(); // hier ist jetzt "TestText"

A wise man can learn more from a foolish question than a fool can learn from a wise answer!
Bruce Lee

Populanten von Domizilen mit fragiler, transparenter Außenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
Wer im Glashaus sitzt, sollte nicht mit Steinen werfen.

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo Linus,

ich vermute, du willst ini-Dateien lesen: IniReader

herbivore

P
22 Beiträge seit 2006
vor 17 Jahren

Hi,

ich weis nicht ob hier noch jemand vorbeischaut. Und da ich ja selber noch ein blutiger Anfänger bin bin ich mir auch nicht sicher, ob man "meine" Technik in dem Fall anwenden kann. Auf jeden Fall versuch ich mal zu erklären.

Schlagwort: System.IO.File.ReadAllLines()

Rückgabewert: string[]-Array

string dateipfad = @"C:\testdatei.txt";

string[] zeile = System.IO.File.ReadAllLines(dateipfad);

textBox1.Text = zeile[3];

Ich denke, dass ich euch nicht sagen muss, dass mit zeile[3] die 4 Zeile in dem Dokument ausliest.

Ich denke wenn man die genaue Zeilenzahl kennt, ist dies die einfachere Methode. Und da ich sie verstehe, solltet ihr damit keine Probleme haben 😉

1.271 Beiträge seit 2005
vor 17 Jahren

Hallo Peoplemann,

Deine Methode ist sicherlich die einfachste und auch gut solange du sowieso die ganze Datei einlesen möchtest. Möchte man allerdings nur diesen bestimmten Wert (oder auch ein paar mehr) einlesen, ist die Methode nicht empfehlenswert, da trotzdem alles eingelesen und in den Speicher geschrieben wird. bei kleineren Dateien macht sich das noch nicht bemerkbar, bei größeren dafür umso mehr.

Gruß,
Thomas

Edit: Außerdem hat herbivore oben schon eine effiziente Lösung genannt.

A wise man can learn more from a foolish question than a fool can learn from a wise answer!
Bruce Lee

Populanten von Domizilen mit fragiler, transparenter Außenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
Wer im Glashaus sitzt, sollte nicht mit Steinen werfen.