C# und Dateien: Vom Anfänger zum Meister der Dateisystemarbeit

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Warum die Fähigkeit, mit Dateien in C# zu arbeiten, eine Superkraft ist?

\n\n

Stellen Sie sich vor, Sie schreiben ein Programm, das Benutzereinstellungen speichern, Fehler protokollieren oder Tausende von Dokumenten verarbeiten soll. Ohne Kenntnisse der Dateisystemarbeit stoßen Sie an eine Wand. In C# ist die Arbeit mit Dateien nicht nur langweiliges Zeilenlesen. Es ist die Möglichkeit, leistungsstarke Dienstprogramme, Parser und sogar Mini-Datenbanken zu erstellen.

\n\n

In diesem Artikel behandeln wir alles: vom einfachen File.ReadAllText bis zur fortgeschrittenen Arbeit mit Streams und Ordnern. Sie erfahren, wie Sie Daten nicht verlieren, wie Sie das Lesen großer Dateien optimieren und wie Sie die „Fallstricke“ des Dateisystems umgehen. Los geht's!

\n\n

Die Heldenklassen: File, FileInfo, Directory und Path

\n\n

In .NET gibt es zwei Ansätze für die Arbeit mit Dateien: statische Methoden der Klasse File und Instanzmethoden der Klasse FileInfo. Ersteres ist für schnelle Operationen wie „gelesen-geschrieben“, Letzteres, wenn Sie lange und zustandsbehaftet mit einer einzelnen Datei arbeiten müssen.

\n\n

File vs FileInfo: Wann verwende ich was?

\n\n

File ist eine statische Klasse. Sie schreiben File.Exists("test.txt") – und fertig. Praktisch, aber bei jeder Operation wird der Pfad erneut geprüft.

\n\n

FileInfo – Sie erstellen einmal ein Objekt und rufen dann Methoden auf. Das ist schneller, wenn Sie mehrere Aktionen mit einer Datei durchführen.

\n\n
// Schneller Weg\nif (File.Exists(@"C:\\data\\log.txt"))\n{\n    string content = File.ReadAllText(@"C:\\data\\log.txt");\n    Console.WriteLine(content);\n}\n\n// Professioneller Weg\nFileInfo fileInfo = new FileInfo(@"C:\\data\\log.txt");\nif (fileInfo.Exists)\n{\n    using (StreamReader reader = fileInfo.OpenText())\n    {\n        string content = reader.ReadToEnd();\n        Console.WriteLine(content);\n    }\n}\n
\n\n

Die Klasse Directory funktioniert nach dem gleichen Prinzip – statische Methoden für schnelle Operationen mit Ordnern. Path ist ein unverzichtbarer Helfer zum Zusammenfügen von Pfaden: Path.Combine("folder", "file.txt") setzt automatisch den richtigen Schrägstrich.

\n\n

Dateien lesen: Vom Kleinen bis zum Gigantischen

\n\n

Das Lesen von Dateien in C# ist eine Kunst der Balance zwischen Einfachheit und Leistung. Lassen Sie uns drei Ebenen betrachten.

\n\n

Ebene 1: Alles auf einmal (für kleine Dateien)

\n\n

Wenn die Datei bis zu 10 MB groß ist, verwenden Sie bedenkenlos ReadAllText oder ReadAllLines.

\n\n
string text = File.ReadAllText("config.json");\nstring[] lines = File.ReadAllLines("users.csv");\n
\n\n

Nachteil: Bei einer großen Datei riskieren Sie eine OutOfMemoryException.

\n\n

Ebene 2: Zeilenweises Lesen (für mittlere Dateien)

\n\n

Wir verwenden StreamReader – lesen Zeile für Zeile, ohne alles in den Speicher zu laden.

\n\n
using (StreamReader reader = new StreamReader("big_log.txt"))\n{\n    string line;\n    while ((line = reader.ReadLine()) != null)\n    {\n        Console.WriteLine(line); // Jede Zeile verarbeiten\n    }\n}\n
\n\n

Beachten Sie das using – es stellt sicher, dass die Datei geschlossen wird, selbst wenn ein Fehler auftritt.

\n\n

Ebene 3: Binärdaten lesen (für Profis)

\n\n

Die Arbeit mit Bildern, Archiven oder anderen Nicht-Text-Dateien erfordert FileStream.

\n\n
using (FileStream fs = new FileStream("photo.jpg", FileMode.Open, FileAccess.Read))\n{\n    byte[] buffer = new byte[1024];\n    int bytesRead;\n    while ((bytesRead = fs.Read(buffer, 0, buffer.Length)) > 0)\n    {\n        // Datenblock verarbeiten\n        Console.WriteLine($"Gelesen {bytesRead} Bytes");\n    }\n}\n
\n\n

Dateien schreiben: Wie Sie Daten nicht verlieren

\n\n

Schreiben in C# ist nicht nur File.WriteAllText. Es ist wichtig, die Modi zu verstehen: Neue Datei erstellen, an das Ende anhängen oder überschreiben.

\n\n

Die wichtigsten FileMode-Modi

\n
    \n
  • CreateNew<

Blogs

Buchempfehlungen