Textdateien mit Trennzeichen auslesen



  • Also ich würde so vorgehen:

    FileStream fStream = new FileStream("filename.txt", FileMode.Open); //FileStream erzeugen
    StreamReader reader = new StreamReader(fStream); //StreamReader erzeugen
    String content = reader.ReadToEnd(); //Datei komplett auslesen
    string[] fragments = content.Split( new char[] { ';' } ); //string.Split splittet den string bei jedem vorkommen eines Trennzeichens 
    //auf und gibt die neuen Strings als array zurück
    

    Nachteil: Du hast gegenüber der Lösung von schmidt-webdesign.net den string (kurzzeitig?) zweimal im Speicher.
    Weiß natürlich auch nicht ob du ihn überhaupt in ein Array aufsplitten willst.



  • Danke erstmal für die antworten
    Ich will es schon in ein Array aufsplitten

    der Inhalt meiner Textdatei sieht z.b. so aus

    ich;du;er
    sie;es;wir

    und dass will ich zeilenweisse aufsplitten und in ein 2 deminsionales array speichern

    habe es jetzt so gemacht das ich mir die zeilen in ein string speichere und dann mit substring alles dynamisch aufsplitte
    das war schon ne aufwendige sache darum wollte ich wissen ob es dafür irgendwelche funktionen oder klassen gibt
    in c++ gibts ja z.b. die getline methode der ich den delimiter mit angeben kann

    für das 2 deminsionale array hab ich eine ArrayList benutzt
    der hab ich dann wieder ne ArrayList angehängt
    Keine Ahnung ob ArrayList das richtige dafür ist, aber ich brauch eine array klasse das seine elemente dynamisch vergrößert



  • Was Du suchst, trägt den Namen Collections und ist hier ausführlich beschrieben: http://www.galileocomputing.de/openbook/visual_csharp/visual_csharp_07_002.htm#Xxxobkap07002040018411f02d186



  • Hmm, ich merke mal an dass es ab .NET 2.0 z.B. auch File.ReadAllText() und File.ReadAllLines() gibt 😉



  • Jetzt ist ein neues Problem aufgetreten
    und zwar werden von der text datei keine Sonderzeichen eingelesen
    ich lesen mit der methode ReadLine() von der Klasse StreamReader ein
    Was kann man da tun?



  • Gib als 'Encoding'-Parameter des StreamReader-Konstruktors mal Encoding.GetEncoding(1252) an, vermutlich ist die Datei keine schöne utf8-Datei sondern eine die Codepage 1252 (Windows ANSI?) verwendet.



  • geeky schrieb:

    Gib als 'Encoding'-Parameter des StreamReader-Konstruktors mal Encoding.GetEncoding(1252) an, vermutlich ist die Datei keine schöne utf8-Datei sondern eine die Codepage 1252 (Windows ANSI?) verwendet.

    Ähm ja...
    Das hab ich jetzt nicht so richtig verstanden^^
    Ich hab eigendlich keinen Konstruktor von StreamReader
    So mach ichs

    StreamReader objReader = File.OpenText(FileName);
    

    Kannst du mir zu dem Beispiel zeigen wie es geht?



  • Ein einfaches Beispiel sieht so aus:

    StreamReader stream = new StreamReader("c:\\tmp\\dies_und_das.txt", System.Text.Encoding.Default);
    


  • Danke, hatt funktioniert 🙂



  • Ich bins nochmal 😃
    Beim StreamWriter funktioniert das aber nicht

    habs so ausprobiert

    StreamWriter myWriter = new StreamWriter(FileName, System.Text.Encoding.Default);
    

    und so

    StreamWriter myWriter = new StreamWriter(FileName, Encoding.GetEncoding(1252))
    


  • Du musst schon noch dabei sagen was nich funktioniert 😉

    Kommt ne Fehlermeldung? Nicht das gewünschte Resultat? Was tut es? Was soll es tun?


Anmelden zum Antworten