Kursinhalt
C# Über die Grundlagen Hinaus
C# Über die Grundlagen Hinaus
Dateien Mit StreamReader Lesen
Wir können Dateien mit der Programmiersprache C# öffnen und lesen.
Zum Lesen einer Datei erstellen wir ein neues StreamReader
-Objekt. Das StreamReader
-Objekt nimmt den Pfad der Datei auf.
index
StreamReader fileVarName = new StreamReader(fullPath);
Hier steht fileVarName
für den Variablennamen, in dem wir das StreamReader-Objekt speichern, und fullPath
soll der vollständige Pfad der Datei in Form eines Strings sein.
Zum Beispiel möchten wir eine Datei "text.txt" auf dem Desktop öffnen, die den Pfad C:/Users/Admin/Desktop/text.txt
hat:
index
StreamReader textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");
Betrachten Sie, dass die Datei text.txt
den folgenden Inhalt hat:
text
This is some example text
Ein StreamReader
-Objekt hat eine ReadLine
-Methode, die eine Zeile aus der Datei liest und zurückgibt:
index
var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line = textFile.ReadLine(); Console.WriteLine(line);
Ausgabe:
Die Methode ReadLine
wechselt automatisch den Cursor zur nächsten Zeile, sodass sie beim erneuten Aufruf die nächste Zeile liest, falls vorhanden, andernfalls gibt sie einfach null
(nichts) zurück:
index
var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); Console.WriteLine(textFile.ReadLine()); // This Console.WriteLine(textFile.ReadLine()); // is Console.WriteLine(textFile.ReadLine()); // some Console.WriteLine(textFile.ReadLine()); // example Console.WriteLine(textFile.ReadLine()); // text Console.WriteLine(textFile.ReadLine()); // NULL
Ausgabe:
Um alle Zeilen aus einer Datei zu lesen, können wir die while
-Schleife mit einer Bedingung verwenden, die überprüft, ob die nächste Zeile null
ist oder nicht. Folgendes ist eine einfache Möglichkeit, wie wir das tun können:
index
var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line = textFile.ReadLine(); while(line != null) { Console.WriteLine(line); line = textFile.ReadLine(); }
Ausgabe:
Wir können den obigen Code mit einem Trick etwas ordentlicher machen, dafür schauen wir uns die Zuweisungsanweisungen an. Eine Zuweisungsanweisung hat ebenfalls einen Rückgabewert, nämlich den Wert, der zugewiesen wird. Dies kann mit einem Beispiel verstanden werden:
index
int a; Console.WriteLine(a = 7);
Ausgabe:
Es gibt 7
aus, weil die Anweisung a = 7
7
zurückgibt, was der Wert ist, der a
zugewiesen wird.
Wir können diese Information nutzen, um einige kreative Dinge zu tun, wie z.B. denselben Wert mehreren Variablen in einer einzigen Anweisung zuzuweisen:
index
int a = 1; int b = 1; int c = 1; a = b = c = 9; Console.WriteLine(a); Console.WriteLine(b); Console.WriteLine(c);
Ausgabe:
Mit diesen Informationen können wir den Datei-Lese-Code ändern, um ihn zu verkürzen und unnötigen Code zu entfernen:
index
var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line; while((line = textFile.ReadLine()) != null) { Console.WriteLine(line); }
Innerhalb der Bedingung haben wir zuerst eine Zuweisungsanweisung line = textFile.ReadLine()
verwendet, die die Variable line
automatisch aktualisiert und dann überprüft, ob sie null ist, basierend auf dem Rückgabewert der Anweisung.
Nach dem Lesen der Datei müssen wir sie auch mit der Methode Close
schließen, da sie sonst potenziell Speicherlecks verursachen oder die Datei gesperrt und von anderen Stellen aus unzugänglich werden kann, solange das Programm läuft.
Der endgültige Code wird ungefähr so aussehen:
index
var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line; while ((line = textFile.ReadLine()) != null) { Console.WriteLine(line); } textFile.Close();
Danke für Ihr Feedback!