C# .txt Datei lesen & schreiben?

DonkeyShot  26.04.2021, 14:29

Könntest du hier ein paar Zeilen Code hinzufügen, wie du schreibst/liest? Dann lässt es sich einfacher ergänzen/korrigieren.

Johannes0118 
Fragesteller
 26.04.2021, 14:32

https://just-paste.it/4FqpN29iw0

2 Antworten

Am besten wäre es, wenn du zum Lesen und Schreiben nur die Klassen StreamWriter und StreamReader verwenden würdest und von diesen jeweils die Methoden WriteLine bzw. ReadLine, um den Text zeilenweise zu schreiben bzw. zu lesen. StreamWriter.WriteLine(string) schreibt eine Zeile (ohne Zeilenumbruch) in die Textdatei, die dem Konstruktor übergeben wird.

Beim Lesen der Datei kannst du mit der Eigenschaft EndOfStream des StreamReaders solange aus der Datei auslesen, bis kein Inhalt mehr vorhanden ist. Sofern die Anzahl Zeilen der Textdatei statisch ist und von Anfang an feststeht, ist gegen den Gebrauch eines String-Arrays, wie @DonkeyShot es vorschlug, nichts einzuwenden. Um sicherzugehen, empfehle ich persönlich eher eine generische Liste vom Typ String. Auf die einzelnen Elemente der Liste kann man genauso zugreifen, wie beim Array. Hier ein Beispiel für das Auslesen einer Textdatei:

List<string> ReadFile(string path)
{
    List<string> result = new List<string>();
    // using schließt die Datei automatisch, sodass die Close()-Methode nicht aufgerufen werden muss
    using(StreamReader sr = new StreamReader(path))
    {
        // solange bis Dateiende erreicht wurde wird gelesen
        while(!sr.EndOfStream)
        {
            result.Add(sr.ReadLine());
        }
    }

    return result;
}
Woher ich das weiß:Studium / Ausbildung

Sehe ich's richtig, dass du alle Dateien mit File.ReadAllText einliest?

Gibt mehrere Möglichkeiten. #1: Du schreibst nicht mit WriteLine sondern mit Write, dann wird auch kein Zeilenumbruch geschrieben. #2: Du arbeitest mit einem StreamReader und rufst ReadLine auf. Dann steht im gelesenen String nur der Zeileninhalt ohne Zeilenumbruch. #3: Mit File.ReadAllLines alle Zeilen der Datei in ein Array einlesen und nur auf das erste Element zugreifen. Variante #1 wird vermutlich am besten passen. Dann bräuchtest du auch keinen StreamWriter, sondern kannst die Datei einfach mit File.WriteAllText erstellen.

Woher ich das weiß:Studium / Ausbildung – Datenverarbeitungs-Kfm, Hobby- und Profi-Programmierer