CodeGym /Kurse /C# SELF /Begriff von Datei, Dateisystem und Pfad

Begriff von Datei, Dateisystem und Pfad

C# SELF
Level 35 , Lektion 0
Verfügbar

1. Einführung

Datei – das ist einfach ein Datenblock, der physisch auf irgendeinem Speichergerät liegt: Festplatte, SSD, USB-Stick oder sogar Diskette (Grüße an deinen Opa!). Für den User ist eine Datei etwas, das man öffnen, lesen, ändern und speichern kann.

In der Programmierung ist eine Datei eine Folge von Bytes mit einem Namen und einem Speicherort, und für dich als Programmierer:in ist das ein Objekt mit Name, Pfad (wie eine Adresse), Größe, Erstellungsdatum usw. Das Wichtigste: Eine Datei ist ein persistenter (dauerhafter) Datenspeicher. Alles, was im RAM nach dem Start des Programms passiert, verschwindet normalerweise beim Beenden – aber die Datei bleibt.

Was ist ein Dateisystem?

Dateisystem – das ist die Art und Weise, wie Dateien auf einem Laufwerk gespeichert und organisiert werden. Es beantwortet Fragen wie: Wo und wie finde ich eine Datei, wer hat Zugriff darauf, wie sind Ordner (Verzeichnisse) aufgebaut, wie findet man den Dateinamen und den Inhalt.

Stell dir einen riesigen Schrank mit vielen Schubladen vor. In jeder Schublade können Ordner liegen, und in jedem Ordner – Dokumente (Dateien). Um deinen C#-Mitschrift zu finden, musst du den Schrank öffnen, die richtige Schublade finden, den Ordner herausnehmen und darin das gesuchte Blatt finden. So organisiert das Dateisystem die Infos.

Beliebte Dateisysteme

  • NTFS – das „native“ Dateisystem von Windows.
  • FAT32, exFAT – für USB-Sticks, SD-Karten, externe Speicher.
  • EXT4 – beliebt unter Linux.
  • APFS, HFS+ – macOS.

Für C#-Programmierer:innen ist das meistens egal: .NET versteckt die Details, du arbeitest mit der Abstraktion „Datei/Ordner“. Aber manchmal ist es gut, ein bisschen was zu wissen. Zum Beispiel: In NTFS sind Leerzeichen und viele Sonderzeichen im Dateinamen erlaubt, in FAT32 nicht.

2. Wie sind Verzeichnisse (Ordner) aufgebaut

Verzeichnis (oder Ordner) – das ist ein spezieller Dateityp, der Listen von anderen Dateien und/oder Verzeichnissen enthält. Das Verzeichnisbaum (Dateihierarchie) ist der gewohnte Pfad vom Wurzelverzeichnis zur Datei, z.B. C:\Users\Ivan\Documents\MyFile.txt.

  • Wurzel – das ist der Anfang des Laufwerks (C:\).
  • Darin liegen Ordner (Unterordner), in denen Dateien oder weitere Ordner liegen.

Hier eine einfache Visualisierung:


C:\
 └── Users\
     └── Ivan\
         ├── Documents\
         │    └── MyFile.txt
         └── Pictures\
              └── Cat.jpg

3. Was ist ein Dateipfad (file path)?

Dateipfad – das ist die „Adresse“ einer Datei im Verzeichnisbaum. Damit kannst du eindeutig eine Datei oder einen Ordner finden.

Absoluter und relativer Pfad

  • Absoluter Pfad: beginnt beim Wurzelverzeichnis.
    Windows: C:\Users\Ivan\Documents\MyFile.txt
    Linux/macOS: /home/ivan/Documents/MyFile.txt
  • Relativer Pfad: beginnt beim aktuellen Ort (aktuelles Verzeichnis).
    Zum Beispiel: Wenn dein Programm aus dem Ordner C:\Users\Ivan gestartet wurde, führt der relative Pfad Documents\MyFile.txt zur gleichen Datei.

Aktuelles Verzeichnis – das ist ein spezieller Begriff: der „Startpunkt“ für alle relativen Pfade. Beim Start eines Programms ist das meistens der Ordner, in dem die .exe liegt, oder der, in dem du die Konsole geöffnet hast.

Schaubild: Absoluter und relativer Pfad


Absoluter Pfad                                Relativer Pfad

C:\Projects\MyApp\logs\output.txt              logs\output.txt
└─ Laufwerkswurzel (C:)                        └─ Relativ zu gestartetem MyApp

Trennzeichen in Pfaden: \ und /

Unter Windows wird Backslash (\) verwendet, unter Linux/macOS meistens Slash (/).

Modernes .NET unterstützt beide Varianten, aber misch sie nicht im selben Projekt. Zum Pfad-Bauen immer das spezielle API (Application Programming Interface) nutzen, nicht einfach Strings zusammenkleben.

4. Wie sieht ein Programm eine Datei?

In .NET gibt’s jede Menge Tools für die Arbeit mit Dateien. Die wichtigsten:

  • System.IO.File: Statische Methoden für schnelles Lesen, Schreiben, Löschen, Prüfen auf Existenz usw.
  • System.IO.Directory: Ähnliche Methoden für Ordner.
  • System.IO.FileInfo und System.IO.DirectoryInfo: Objektorientierte Wrapper mit Zugriff auf Metadaten von Datei/Ordner.
  • System.IO.Path: Hilfsklasse für Pfad-Operationen (Pfad zusammenbauen, Erweiterung extrahieren, Name usw.).

Ein paar Beispiele

Datei auf Existenz prüfen


using System.IO;

if (File.Exists("data.txt"))
{
    Console.WriteLine("Datei gefunden!");
}
else
{
    Console.WriteLine("Datei nicht gefunden!");
}

Dateigröße ermitteln


var info = new FileInfo("data.txt");
Console.WriteLine($"Dateigröße: {info.Length} Bytes");

Wie die Beispiele genau funktionieren, schauen wir uns in den nächsten Vorlesungen an. Jetzt erstmal nur anschauen und genießen :)

5. Nützliche Feinheiten

Datei-Metadaten: Name, Erweiterung, Größe, Datum usw.

Wenn du mit einer Datei arbeitest, interessiert dich nicht nur der Inhalt – es gibt auch den „Datei-Pass“:

  • Name – wie die Datei für Menschen heißt.
  • Erweiterung.txt, .jpg, .exe, .cs usw.: hilft (manchmal!) zu erkennen, was drinsteckt.
  • Größe – Anzahl der Bytes.
  • Erstell-/Änderungszeit – du kannst sehen, wann die Datei erstellt oder zuletzt geändert wurde.
  • Attribute – z.B.: Nur-Lesen, versteckt, Systemdatei.

In .NET sind dafür die Klassen FileInfo, DirectoryInfo praktisch (kommt in einer der nächsten Vorlesungen).

Dateierweiterungen und Formate

Dateierweiterung – das ist einfach der Teil nach dem Punkt im Namen. Zum Beispiel hat document.txt die Erweiterung txt. Das Betriebssystem nutzt die Erweiterung, um zu wissen, womit es die Datei „öffnen“ soll (z.B. .jpg – ein Bildprogramm, .xls – Excel usw.).

Für Programmierer:innen ist die Erweiterung aber nur ein Hinweis. Das echte Dateiformat wird nur durch den Inhalt bestimmt. Du kannst z.B. MyCat.jpg als Text öffnen – und siehst nur „Krakelzeichen“ (irgendwelche komischen Symbole, aber kein Bild). Also: Die Erweiterung ist keine Garantie, nur eine Konvention.

Wie funktioniert Lesen und Schreiben von Dateien: Grundbegriffe

Eine Datei ist eine Folge von Bytes. Arbeiten mit Dateien in C# heißt meistens:

  • Datei öffnen zum Lesen oder Schreiben (oder beides).
  • Lesen von Daten in den Speicher.
  • Schreiben neuer Daten auf die Festplatte.
  • Datei schließen – sehr wichtig, sonst blockierst du die Ressource (und jemand anderes kann die Datei nicht löschen, solange du sie offen hast).

Moderne APIs in .NET kümmern sich um dich: Die Klasse File kann z.B. eine Datei öffnen, lesen und gleich wieder schließen. Aber bei Streams (Stream) und großen Dateien musst du aufpassen (mehr dazu in den nächsten Vorlesungen).

Was ist wichtig für Cross-Plattform?

Fast alles moderne C# läuft unter Windows, Linux und macOS fast gleich. Aber es gibt Unterschiede. Das häufigste: Unterschiedliche Trennzeichen (\ vs /) und Limits bei der Länge des Dateinamens und verbotene Zeichen.

Deshalb sind APIs wie Path.Combine und Methoden aus System.IO.Path deine besten Freunde. Sie „kleben“ den Pfad auf jeder OS richtig zusammen. Schreib niemals so:


var filePath = "C:\\Users\\Ivan\\data.txt"; // Nur für Windows!

Besser:


var filePath = Path.Combine("Users", "Ivan", "data.txt");

Wie finde ich das aktuelle Arbeitsverzeichnis heraus?

Manchmal ist es wichtig zu wissen, wo deine Dateien gespeichert werden. Dafür gibt’s eine spezielle Klasse:


string currentDir = Environment.CurrentDirectory;
Console.WriteLine($"Aktuelles Verzeichnis: {currentDir}");

Übrigens: Wenn du dem User erlauben willst, den Pfad auszuwählen, nutze Datei-/Ordnerauswahldialoge oder Kommandozeilenargumente.

Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION