none
Einzelne Zeilen von textdateien auslesen und speichern RRS feed

  • Frage

  • Hallo,

    ich bin momentan dabei, ein Programm zum Auslesen mehrerer Daten zu schreiben. Kann jetzt alle gewünschten dateien Ausgeben in einer Listbox anzeigen und auch aus dieser öffnen.

    Nun möchte ich, per Button klick, bestimmte Zeilen von diesen Dateien auslesen. Es sind 9 Stück genau.

    Habe es folgendermaßen versucht:

                            var zeilen = File.ReadLines("V:\\...\\);
                            var zweiteZeile = zeilen.Skip(1).First();
                            MessageBox.Show(zweiteZeile);
                            string [] zeile = reader.ReadLine().Split(';');
                            string bsp1 = zeile [4];
                            string bsp2 zeile[5];
                            string bsp3 = zeile[6];
                            string bsp4 = zeile[7];
                            string bsp5 = zeile[8];
                            string bsp 6 = zeile[9];
                            string bsp 7 = zeile[10];
                            string bsp 8 = zeile[11];
                            string bsp 9 = zeile[12];

    1. Funktioniert dies leider gar nicht (dachte man gibt in den Klammern die Zeilenzahl an... hatte ich irgendwo anders gelesen)

    2. Würde ich in der Datei gerne immer nur das, was nach dem Doppelpunkt steht öffnen.

    Also in der Datei steht beispielsweise ("bsp1 : 6,564589")

    Da würde ich gerne nur die 6,564589 speichern. Sieht da jmd die Möglichkeit?

    mit freundlichen Grüßen

    Mittwoch, 7. Mai 2014 09:27

Antworten

  • Hallo,
    die Grundlagen sind wichtig, ohnedenen wirst du ewig Hilfe brauchen.

    Eine Datei kannst du einfach mit File.ReadAllLines Zeilenweise auslesen. Zurück erhälst du ein String-Array. Von diesem Array kannst du per Index auf die einzelnen Zeilen zugreifen:

    var lines = File.ReadAllLines(@"DATEIPFAD");
    var line1 = lines[0];//1. Zeile lesen
    var line2 = lines[1];//2. Zeile lesen

    Wie du siehst, ist der Index Nullbasiert.

    Den Teil hinter dem Doppelpunkt bekommst du mit der Split-Methode:

    var parts = lines[0].Split(new char[]{':'}, 2);//In maximal 2 Teile teilen
    var part2 = parts[1].Trim();//Teil hinter demDoppelpunkt nehmen und Leerzeichen entfernen
    var dbl = double.Parse(part2);//Falls du mit der Zahl rechnen willst
    Bei der double.Parse bzw. auch bei der ToString-Methode solltest du CultureInfo.InvariantCulture als 2. angeben, um nicht mit Kultuspezifischen Formatierungen zu arbeiten. (Sonst könntest du das 6,5 auf einem englischen Windows nicht in ein 6.5 wandelt. CultureInfo.InvariantCulture verwendet ein überall einheitliches Format.)


    Tom Lambert - C# MVP
    Bitte bewertet- und markiert Beiträge als Antwort. Danke.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    Mittwoch, 7. Mai 2014 13:17
    Moderator

Alle Antworten

  • Bzw zeigt er mir jetzt, wenn ich "var zweiteZeile = zeilen.Skip(4).First();" schreibe, leider nur die erste von den neun auszugebenen Zeilen an... des weiteren kommt eine Fehlermeldung.

    Vielen Dank schonmal im vorraus

    Mittwoch, 7. Mai 2014 09:32
  • Hallo,
    die Grundlagen sind wichtig, ohnedenen wirst du ewig Hilfe brauchen.

    Eine Datei kannst du einfach mit File.ReadAllLines Zeilenweise auslesen. Zurück erhälst du ein String-Array. Von diesem Array kannst du per Index auf die einzelnen Zeilen zugreifen:

    var lines = File.ReadAllLines(@"DATEIPFAD");
    var line1 = lines[0];//1. Zeile lesen
    var line2 = lines[1];//2. Zeile lesen

    Wie du siehst, ist der Index Nullbasiert.

    Den Teil hinter dem Doppelpunkt bekommst du mit der Split-Methode:

    var parts = lines[0].Split(new char[]{':'}, 2);//In maximal 2 Teile teilen
    var part2 = parts[1].Trim();//Teil hinter demDoppelpunkt nehmen und Leerzeichen entfernen
    var dbl = double.Parse(part2);//Falls du mit der Zahl rechnen willst
    Bei der double.Parse bzw. auch bei der ToString-Methode solltest du CultureInfo.InvariantCulture als 2. angeben, um nicht mit Kultuspezifischen Formatierungen zu arbeiten. (Sonst könntest du das 6,5 auf einem englischen Windows nicht in ein 6.5 wandelt. CultureInfo.InvariantCulture verwendet ein überall einheitliches Format.)


    Tom Lambert - C# MVP
    Bitte bewertet- und markiert Beiträge als Antwort. Danke.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    Mittwoch, 7. Mai 2014 13:17
    Moderator
  • Danke :-)
    Montag, 12. Mai 2014 09:30