Einführung
In diesem Tutorial lernst du, wie man mit VisualStudio in C# Dateien einliest und wie man mit Exceptions umgeht.
Wie starte ich am besten?
Öffne Visual Studio und erstelle eine neue Konsolenapplikation (Console Application). Nun wurde das Projekt erstellt und bereits die Program.cs Datei geöffnet. Wird die App mit dem grünen Startbutton (oder mit F5) gestartet, öffnet sich ein Konsolenfenster und der Code in der Main Method wird aufgerufen.
Los geht's!
Datei einlesen
Als Erstes erstelle eine Datei in einem Ordner deiner Wahl, beispielsweise "Example.txt". Nun musst du in deinem Programm den Namespace System.IO importieren. Schreibe dafür "using System.IO;" an den Anfang deines Programmes.
Nun wollen wir deine erstellte Datei als String einlesen. Die "File"-Klasse bietet hierfür mehrere Möglichkeiten.
- Die ReadAllText-Methode liest den Inhalt der Datei als einzigen String ein.
- Die ReadAllLines-Methode liest den Inhalt der Datei als Array (Liste) von Strings ein, wo jede Zeile in der Datei ein Element im Array ist.
Hinweis
Pfadnamen haben unter Windows als Trennteichen einen Backslash ("\"). Unglücklicher Weise wird ein Backslash auch zum Escapen von Sonderzeichen verwendet. Wenn man beispielsweise ein Anführungszeichen, oder einen Backslash in einem String verwenden möchte muss man davor einen Backslash schreiben (" \" " bzw. " \\ "), damit klar ist, dass dies nicht das Ende des String ist, sondern ein Anführungszeichen.
Das "@"-Symbol vor dem String (verbatim string literal) sorgt dafür, dass man ohne Probleme einen Backslash schreiben kann, ohne diesen extra escapen zu müssen.
Exception Handling
Der Code oben funktioniert nur, wenn die Datei an dem angegebenen Pfad existiert. Ist die Datei nicht vorhanden oder der Pfadname falsch, dann stürzt das Programm ab und man sieht eine Exception im VisualStudio.
Hierfür gibt es try-catch-Blöcke. Sie können alle, oder nur bestimmte Exceptions abfangen und wir können dann Code schreiben, der nur im Fehlerfall ausgeführt wird, zb. eine Fehlermeldung in der Konsole ausgeben.
Wenn die App gestartet wird, wird der Try-Block aufgerufen und versucht, die Datei zu lesen. Nur wenn eine Exception auftritt, beispielsweise wenn die Datei nicht vorhanden ist, wird der Code im Catch-Block aufgerufen - tritt keine Exception auf, wird der Code einfach übersprungen.
Mehrere Exceptions abfangen
An einen Try-Block können beliebig viele Catch-Blöcke für verschiedene Exceptions angehängt werden.
Bewegt man die Maus auf eine Methode, wird angezeigt, ob und welche Exceptions diese werfen kann. In der Microsoft Dokumentation kannst du nachlesen, welche Exceptions wann geworfen werden.
So kann man je nach Exception anders reagieren. Wenn die Datei nicht existiert kann man dann beispielsweise einen anderen Text ausgeben, als wenn der Ordner nicht existiert.
Nach den Catch-Blöcken kann noch ein Finally-Block hinzugefügt werden. Der Code im Finally-Block wird immer ausgeführt, wenn eine Exception geworfen wurde, aber auch, wenn alles ohne Fehler durchgelaufen ist.
Dies hat den Zweck, dass man hier beispielsweise Streams schließen kann oder um Variablen zurückzusetzen, da der Code immer ausgeführt wird und so der Stream immer geschlossen wird.