Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Dateien Mit StreamReader Lesen | Zusätzliche Strukturen & Dateiverarbeitung
C# Über die Grundlagen Hinaus
course content

Kursinhalt

C# Über die Grundlagen Hinaus

C# Über die Grundlagen Hinaus

1. Zusätzliche Strukturen & Dateiverarbeitung
2. Strukturen & Enumeratoren
3. Einführung in die Objektorientierte Programmierung (OOP)
4. OOP Essentials
5. OOP-Prinzipien

book
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.

cs

index

copy
1
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:

cs

index

copy
1
StreamReader textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");

Betrachten Sie, dass die Datei text.txt den folgenden Inhalt hat:

txt

text

copy
12345
This is some example text

Ein StreamReader-Objekt hat eine ReadLine-Methode, die eine Zeile aus der Datei liest und zurückgibt:

cs

index

copy
1234
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:

cs

index

copy
12345678
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:

cs

index

copy
12345678
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:

cs

index

copy
12
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:

cs

index

copy
123456789
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:

cs

index

copy
1234567
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:

cs

index

copy
123456789
var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line; while ((line = textFile.ReadLine()) != null) { Console.WriteLine(line); } textFile.Close();
question-icon

=();

Click or drag`n`drop items and fill in the blanks

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 6
We're sorry to hear that something went wrong. What happened?
some-alt