Autor Beitrag
Firefox977
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Mi 13.04.16 16:59 
Hallo,

ich schreibe bald eine Klausur in Informatik und brauche Hilfe.

Das Thema wird Auslesen und Abspeichern von z.B. einer txt. Datei. Zum üben wollte ich etwas eintippen, abspeichern und danach wieder auslesen. Jedoch komme ich nicht weiter. Ich werde meinen Fortschritt, den ich bis jetzt habe posten. Ich hoffe mir kann einer weiterhelfen und möglicherweise Tipps geben, was ich besser machen kann!

Vielen Dank im Vorraus!!
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
string path = (@"C:\Users\WM\Documents\Schueler.txt");
string Inhalt = Console.ReadLine();
using (StreamWriter file = new StreamWriter(path, true))
{
    file.WriteLine(Inhalt);
}
StreamReader stream = new StreamReader(@"C:\Users\WM\Documents\Schueler.txt");
while (stream.Peek() != -1)
{
    Inhalt = stream.ReadLine();
    string[] Zeilenteile = Inhalt.Split(';');
    Console.WriteLine(Zeilenteile[0] + '\t'+  Zeilenteile [1]);
}
Console.ReadKey();


Moderiert von user profile iconTh69: C#-Tags hinzugefügt
Moderiert von user profile iconTh69: Topic aus C# - Die Sprache verschoben am Mi 13.04.2016 um 17:11
Palladin007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1200
Erhaltene Danke: 158

Windows 10 x64 Home Premium
C# (VS 2015 Enterprise)
BeitragVerfasst: Mi 13.04.16 19:34 
Wo ist denn das Problem, was funktioniert nicht?

Ein paar Tipps zum Code selber:

Ein FileStream sollte immer geschlossen werden.
Das using, wie Du es beim StreamWriter nutzt, macht genau das, also warum nutzt Du es nicht auch?

Außerdem sollten Variablen nur dort bekannt sein, wo Du sie auch brauchst.
So brauchst Du die Variable "Inhalt" nur in der while-Schleife um danach die Zeile zu splitten. Sie muss sonst nirgendwo bekannt sein.
Außerdem nutzt Du die Variable für zwei Dinge: Einlesen des Textes zum Speichern und Auslesen für die Ausgabe. Zwei verschiedene Aufgaben, hier wären zwei Varriablen besser, deren Namen deren Inhalt eindeutig, kurz und knapp beschreiben.

Warum nutzt Du die path-Variable nicht auch im StreamReader?
Versuch Dopplungen zu vermeiden, dann machst Du auch weniger Fehler.

Außerdem solltest Du im Hinterkopf behalten, dass Du zwingend immer mindestens ein Semikolon in die Datei schreiben musst.
Wenn da keins dabei ist, bekommst Du von der Split-Methode auch nur ein Item zurück und dann knallts danach, weil Du auf ein nicht vorhandenes zweites Element zugreifen willst.
Besser wäre hier eine Schleife, mit der Du alle Items, die die Split-Methode zurück gibt, betrachtest. Nicht mehr und nicht weniger.