Textdateien mit Trennzeichen auslesen
-
Hallo
ich bin Anfänger in C# und möchte eine in eine Textdatei Sachen schreiben und mit einem Trennzeichen (z.b. ';') trennen.
Danach immer bis zum trennzeichen auslesen.
Wie geht das in C#?
in C++ habe ich die Methode getline benutzt wo ich gleich das Trennzeichen mit angeben konnte
hoffe ihr könnt mir helfen
-
Das grundsätzliche Vorgehen beim Lesezugriff auf den Inhalt einer Textdatei ist:
- Erzeugen eines FileStream-Objekts
- Erzeugen eines StreamReader-Objekts auf Basis des FileStream-Objekts
- Setzen des Zeigers auf den Anfang des Streams
- Danach können Inhalte mit Read() und ReadLine() gelesen werden.
- Während des Lesens kann mit while r.Peek() > -1 auf das Erreichen des Dateiendes geprüft werden.
- Aufruf von Close() im StreamReader-Objekt
- Aufruf von Close() im FileStream-ObjektNachtrag - Link vergessen ...
-
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 aufsplittender Inhalt meiner Textdatei sieht z.b. so aus
ich;du;er
sie;es;wirund 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 kannfü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 ichsStreamReader 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 nichthabs 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?