Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Dateien Mit StreamReader Lesen | Datenstrukturen & Dateiverarbeitung
C# Jenseits der Grundlagen

bookDateien Mit StreamReader Lesen

Sie können Dateien mit der Programmiersprache C# öffnen und lesen.

Zum Lesen einer Datei erstellen wir ein neues StreamReader-Objekt. Das Objekt StreamReader erhält den Pfad der Datei als Eingabe.

Note
Hinweis

Der Begriff "Objekt" wird in späteren Abschnitten noch genauer erklärt. Zum Verständnis: Ein Objekt ist einfach eine Instanz eines Datentyps, und StreamReader ist ein Datentyp wie int oder float. Die Werte 1, 2.5f und "Hello World" können technisch als "Objekte" der Datentypen int, float bzw. string bezeichnet werden.

index.cs

index.cs

copy
1
StreamReader fileVarName = new StreamReader(fullPath);

Hier steht fileVarName für den Variablennamen, in dem das StreamReader-Objekt gespeichert wird, und fullPath soll den vollständigen Pfad der Datei als Zeichenkette enthalten.

Zum Beispiel kann eine Datei "text.txt" auf dem Desktop geöffnet werden, die den Pfad C:/Users/Admin/Desktop/text.txt hat:

index.cs

index.cs

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

Es kann auch eine implizite Deklaration verwendet werden, um die Syntax etwas zu verkürzen: var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");

Angenommen, die Datei text.txt enthält folgenden Inhalt:

text.txt

text.txt

copy
12345
This is some example text

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

index.cs

index.cs

copy
1234
var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line = textFile.ReadLine(); Console.WriteLine(line);

Ausgabe:

This

Die Methode ReadLine springt automatisch zum Anfang der nächsten Zeile. Wird sie erneut aufgerufen, liest sie die nächste Zeile, sofern vorhanden. Andernfalls gibt sie einfach null (nichts) zurück:

index.cs

index.cs

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:

This
is
some
example
text

Um alle Zeilen aus einer Datei zu lesen, kann eine while-Schleife verwendet werden, deren Bedingung prüft, ob die nächste Zeile null ist oder nicht. Nachfolgend eine einfache Möglichkeit, dies umzusetzen:

index.cs

index.cs

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:

This
is
some
example
text

Der obige Code kann durch einen Trick etwas übersichtlicher gestaltet werden. Dafür betrachten wir die Zuweisungsanweisungen. Eine Zuweisungsanweisung besitzt ebenfalls einen Rückgabewert, nämlich den Wert, der zugewiesen wird. Dies lässt sich anhand eines Beispiels verdeutlichen:

index.cs

index.cs

copy
12
int a; Console.WriteLine(a = 7);

Ausgabe:

7

Es wird 7 ausgegeben, da der Ausdruck a = 7 den Wert 7 zurückgibt, welcher a zugewiesen wird.

Diese Information kann genutzt werden, um beispielsweise mehreren Variablen in einer einzigen Anweisung denselben Wert zuzuweisen:

index.cs

index.cs

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:

9
9
9

Mit diesen Informationen kann der Code zum Lesen von Dateien gekürzt werden, indem überflüssiger Code entfernt wird:

index.cs

index.cs

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 wurde zunächst eine Zuweisungsanweisung line = textFile.ReadLine() verwendet, die die Variable line automatisch aktualisiert und anschließend anhand des Rückgabewerts prüft, ob sie null ist.

Nach dem Lesen der Datei muss diese mit der Methode Close geschlossen werden, da es sonst zu Speicherlecks kommen kann oder die Datei gesperrt bleibt und von anderen Stellen aus nicht mehr zugänglich ist, solange das Programm läuft.

Der endgültige Code sieht folgendermaßen aus:

index.cs

index.cs

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

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Awesome!

Completion rate improved to 2.04

bookDateien Mit StreamReader Lesen

Swipe um das Menü anzuzeigen

Sie können Dateien mit der Programmiersprache C# öffnen und lesen.

Zum Lesen einer Datei erstellen wir ein neues StreamReader-Objekt. Das Objekt StreamReader erhält den Pfad der Datei als Eingabe.

Note
Hinweis

Der Begriff "Objekt" wird in späteren Abschnitten noch genauer erklärt. Zum Verständnis: Ein Objekt ist einfach eine Instanz eines Datentyps, und StreamReader ist ein Datentyp wie int oder float. Die Werte 1, 2.5f und "Hello World" können technisch als "Objekte" der Datentypen int, float bzw. string bezeichnet werden.

index.cs

index.cs

copy
1
StreamReader fileVarName = new StreamReader(fullPath);

Hier steht fileVarName für den Variablennamen, in dem das StreamReader-Objekt gespeichert wird, und fullPath soll den vollständigen Pfad der Datei als Zeichenkette enthalten.

Zum Beispiel kann eine Datei "text.txt" auf dem Desktop geöffnet werden, die den Pfad C:/Users/Admin/Desktop/text.txt hat:

index.cs

index.cs

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

Es kann auch eine implizite Deklaration verwendet werden, um die Syntax etwas zu verkürzen: var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt");

Angenommen, die Datei text.txt enthält folgenden Inhalt:

text.txt

text.txt

copy
12345
This is some example text

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

index.cs

index.cs

copy
1234
var textFile = new StreamReader("C:/Users/Admin/Desktop/text.txt"); string line = textFile.ReadLine(); Console.WriteLine(line);

Ausgabe:

This

Die Methode ReadLine springt automatisch zum Anfang der nächsten Zeile. Wird sie erneut aufgerufen, liest sie die nächste Zeile, sofern vorhanden. Andernfalls gibt sie einfach null (nichts) zurück:

index.cs

index.cs

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:

This
is
some
example
text

Um alle Zeilen aus einer Datei zu lesen, kann eine while-Schleife verwendet werden, deren Bedingung prüft, ob die nächste Zeile null ist oder nicht. Nachfolgend eine einfache Möglichkeit, dies umzusetzen:

index.cs

index.cs

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:

This
is
some
example
text

Der obige Code kann durch einen Trick etwas übersichtlicher gestaltet werden. Dafür betrachten wir die Zuweisungsanweisungen. Eine Zuweisungsanweisung besitzt ebenfalls einen Rückgabewert, nämlich den Wert, der zugewiesen wird. Dies lässt sich anhand eines Beispiels verdeutlichen:

index.cs

index.cs

copy
12
int a; Console.WriteLine(a = 7);

Ausgabe:

7

Es wird 7 ausgegeben, da der Ausdruck a = 7 den Wert 7 zurückgibt, welcher a zugewiesen wird.

Diese Information kann genutzt werden, um beispielsweise mehreren Variablen in einer einzigen Anweisung denselben Wert zuzuweisen:

index.cs

index.cs

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:

9
9
9

Mit diesen Informationen kann der Code zum Lesen von Dateien gekürzt werden, indem überflüssiger Code entfernt wird:

index.cs

index.cs

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 wurde zunächst eine Zuweisungsanweisung line = textFile.ReadLine() verwendet, die die Variable line automatisch aktualisiert und anschließend anhand des Rückgabewerts prüft, ob sie null ist.

Nach dem Lesen der Datei muss diese mit der Methode Close geschlossen werden, da es sonst zu Speicherlecks kommen kann oder die Datei gesperrt bleibt und von anderen Stellen aus nicht mehr zugänglich ist, solange das Programm läuft.

Der endgültige Code sieht folgendermaßen aus:

index.cs

index.cs

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
some-alt