Datei
Eine Datei (englisch file) ist ein Bestand meist inhaltlich zusammengehöriger Daten, der auf einem Datenträger oder Speichermedium gespeichert ist und hauptsächlich anhand eines Dateinamens identifiziert wird. Diese Daten können somit über die Laufzeit eines Programms hinaus existieren und werden als persistent bezeichnet.
Der deutsche Begriff „Datei“ ist deutlich enger gefasst als die englische Übersetzung file, welche oft auch eine (Papier-)Akte, eine (Papier-)Kartei oder einen Karteikasten beschreibt. Evtl. ist eine Präzisierung auf data file oder computer file notwendig. Der Duden lässt eine Bedeutung von „Datei“ als (Papier-)Sammlung von Informationen zu,[1] diese Verwendung ist aber wohl selten.[2]
Innere Strukturierung
In der elektronischen Datenverarbeitung ist der Inhalt jeder Datei zunächst eine eindimensionale Aneinanderreihung von Bits, die normalerweise in Byte-Blöcken zusammengefasst interpretiert werden. Erst der Anwender einer Datei bzw. ein Anwendungsprogramm oder das Betriebssystem selbst interpretieren diese Bit- oder Bytefolge beispielsweise als einen Text, ein ausführbares Programm, ein Bild oder eine Tonaufzeichnung. Eine Datei besitzt also ein Dateiformat.
Geschichtliche Entwicklung
Vor der Entwicklung von Dateien und Dateisystemen wurde der Notwendigkeit, dass (Ergebnis-)Daten bei Programmende nicht verloren gehen dürfen, meist derart begegnet, dass die Daten räumlich oder logisch getrennt gespeichert wurden, und der Speicherort meist händisch verwaltet wurde. Beispielsweise wurden Ergebnisdaten als Lochkartenstapel ausgegeben, und jeder Stapel kam in einen gesonderten Karton, der dann entsprechend beschriftet wurde (räumliche Trennung). Bei magnetischen Speichermedien (z. B. die ersten Floppys und Festplatten) teilte der Benutzer dem Programm explizit mit, ab welchem Speicherblock auf dem Medium die Inputdaten vorliegen, ab welchem Speicherblock es die Ergebnisse ablegen soll und wie viele Blocks es maximal schreiben darf (logische Trennung); der Benutzer musste selbst darüber Buch führen, was wo gespeichert ist und wo noch Freiraum verfügbar ist.
Bedeutung und Nutzung
Dateien ermöglichen einen einfachen Austausch der Daten mit anderen Programmen, Prozessen oder anderen Nutzern. Alternative Methoden zu Datenablage und -austausch sind Datenbanken und zunehmend auch cloudbasierte Speicher, die die Daten meist ebenfalls als Dateien verwalten.
Bei Anwendungsprogrammen werden oft Dateien automatisch beim Start eingelesen (z. B. Voreinstellungen, Konfiguration) und/oder der Nutzer wählt explizit eine zu „ladende“ Datei. Beispielsweise kann ein Text unter einem Namen (der „Dateiname“) in einem Datei-Verwaltungssystem („Dateisystem“) auf einem Datenträger abgelegt sein und durch ein Textverarbeitungsprogramm nach dem Laden durch den Benutzer bearbeitet werden. Wenn der Benutzer den Befehl zur Speicherung auslöst, werden die Daten (hier der Text) in der Datei auf dem Speichermedium aktualisiert und die alte Version damit überschrieben. Mitunter bieten Programme weitere Möglichkeiten im Umgang mit Dateien:
- Das „Speichern als“ dient der Speicherung unter neuem Namen, auf anderem Datenträger oder in einem anderen Dateiformat;
- Datenverlust kann ggf. vermieden werden durch regelmäßige automatische Zwischenspeicherung;
- Warnung beim Beenden des Programms ohne vorheriges Speichern der Daten;
- regelmäßiges automatisches Speichern jeglicher Änderungen in der Cloud;
- gleichzeitiges Bearbeiten der Datei mit anderen Benutzern.
Mitunter können auch Meta-Daten in der Datei selbst einem Datenverlust vorbeugen.
Eine Datei besitzt eine innere Struktur sowie externe Attribute bzgl. ihrer Speicherung. Die innere Struktur – das Datenformat – wird meist allein von dem Programm kontrolliert, welches diese Datei speichert und bearbeitet. Die externen Attribute sind vor allem ein Name, der auch der Verwaltung der Ablage dient, sowie allgemeine Attribute für Dateien beliebigen Typs; diese werden meist von dem Dateisystem als Teil des Betriebssystems kontrolliert. Dateien machen Daten leicht kopierbar und transportabel. Hiermit wird ein Datenaustausch möglich, der unabhängig von den eigentlichen Programmen zur Bearbeitung der Daten ist.
Dateisysteme
Dateien werden in den meisten Betriebssystemen über Dateisysteme verwaltet. Ein Dateisystem verwaltet das Speichermedium, indem in Listen vermerkt wird, welche Bereiche des Mediums durch welche Dateien belegt sind, welche Bereiche frei sind, sowie oft Protokolle zu geplanten und/oder abgeschlossenen Änderungen.
Obwohl eine Aufgabe des Dateisystems darin besteht, vom konkreten Speichermedium zu abstrahieren („alle gleich zu behandeln“), sind doch viele Dateisysteme an die üblichen technischen Eigenschaften der Speichermedien angepasst (z. B. Blockgröße 512 Byte für Festplatten).
Für die meisten Dateisysteme ist 1 Byte die kleinste Verwaltungseinheit, d. h., die Länge des Dateiinhalt-Bitstroms muss auf ganze Bytes aufgehen (wobei im Allgemeinen auch 0 Byte = 0 Bit erlaubt sind).
Das Dateisystem verwaltet neben Verzeichnissen mit Dateinamen und -speicherort fast immer noch weitere Dateiattribute. Zu diesen gehören häufig der Dateityp (Verzeichnis, normale Datei, spezielle Datei), die Dateigröße (Anzahl der Bytes in der Datei), Schreib- und Leserechte, Zeitstempel („Datum“, der Erzeugung, des letzten Zugriffs und der letzten Änderung) sowie gegebenenfalls noch andere Informationen. Eine Datei kann in vielen Dateisystemen durch ein Attribut als versteckte Datei gekennzeichnet werden.
Die in Dateinamen verwendbaren Zeichen sind abhängig von Dateisystem, Betriebssystem und gegebenenfalls Sprachoptionen. Beispielsweise dürfen bei Unix-kompatiblen Dateisystemen in einem Dateinamen kein Schrägstrich /
und kein Nullzeichen stehen. Bei anderen Betriebssystemen sind wiederum unterschiedliche Zeichen im Dateinamen nicht erlaubt. Oft ist das jedoch keine Einschränkung des „physischen“ Dateisystems, da bei Verwendung desselben Dateisystems auf einem anderen Betriebssystem diese Zeichen normal gespeichert werden können. Der Zugriff auf derartige Dateien ist dann wegen des unzulässigen Dateinamens auf dem jeweils anderen Betriebssystem üblicherweise nicht möglich, wodurch auch keine Möglichkeit besteht, die Datei umzubenennen oder zu löschen. Auch können die Zeichen unterschiedlich codiert sein, sodass das Betriebssystem auch verwendeten Zeichensatz für die Dateinamen unterstützen muss, um diese richtig anzuzeigen. Unicode wird von vielen historischen Betriebssystemen und manchen damit verbundenen Dateisystemen nicht unterstützt. Ferner ist die Länge des Dateinamens z. B. bei Unix-artigen Systemen auf 255 Zeichen begrenzt. Derartige Begrenzungen finden sich sowohl in den Strukturen des Dateisystems als auch im Betriebssystem selbst, das diese verarbeitet. Zusätzlich dazu haben Betriebssysteme auch ein Limit für den gesamten Dateipfad inklusive Dateinamen – ist dieser unterschiedlich von einem Betriebssystem zum anderen, kann beim Datenaustausch der Zugriff auf Dateien in zu langen Pfaden scheitern.
Arten von Dateien
Nach ihrem Inhalt unterscheidet man unter anderem:
- ausführbare Dateien
- Programme in Maschinensprache
- Programme in Skriptsprachen
- Programme in einem Zwischencode (Bytecode)
- nichtausführbare Dateien
- Programme im Quelltext
- Textdateien
- Audiodateien, zum Beispiel WAV, MIDI, MP3
- Bilddateien
- Datenbankdateien
- Dateiverknüpfung
- allgemein: Binärdateien (z. B. von proprietären Programmen zur Datenspeicherung verwendet)
- …
Moderne Dateisysteme unterstützen auch sogenannte „Sparse-Dateien“: Nur tatsächlich mit Daten gefüllte Abschnitte einer (großen) Datei werden tatsächlich gespeichert; die dazwischen liegenden „freien Bereiche“ werden nicht gespeichert und als „mit Null-Bytes gefüllt“ angenommen/bewertet.
Manche Dateisysteme bieten ferner an, Dateien transparent zu komprimieren oder zu verschlüsseln („transparent“: Das lesende/bearbeitende Programm kann die Datei normal verwenden, als ob die Datei nicht komprimiert/verschlüsselt wäre – es „sieht durch diesen Vorgang ungestört hindurch“).
Unter manchen Betriebssystemen werden auch
- Verzeichnisse
- spezielle Dateien (Pseudodateien)
- Gerätedateien, zum Beispiel /dev/printer, /dev/mouse
- Prozessinformationen, zum Beispiel /proc/68/environ
wie Dateien gehandhabt (vor allem Betriebssysteme der Unix-Familie).
Möglichkeiten, das Dateiformat zu kennzeichnen, beinhalten
- eine Kennzeichnung durch das Dateisystem (beispielsweise ein Ausführbarkeits-Flag)
- eine Kennzeichnung innerhalb der Daten (beispielsweise
<?xml version="1.0"
am Anfang, siehe auch MIME-Typ, Magische Zahl) - eine Kennzeichnung im Dateinamen bzw. als Dateinamenserweiterung (beispielsweise .jpg, .txt)
- Speicherung in bestimmten Verzeichnissen (beispielsweise /usr/share/doc)
- eine Resource Fork und andere Metainformationen (beispielsweise beim klassischen Mac OS)
Eine solche Kennzeichnung ist teilweise obligatorisch, teilweise dient sie lediglich der Orientierung des Benutzers. Oft fehlen Kennzeichnungen jeder Art; für solche Situationen gibt es spezielle Programme, die den Typ einer Datei zu bestimmen versuchen. Im Unix-Umfeld ist dafür z. B. der Befehl file sehr verbreitet.
Symbolische Darstellung
In grafischen Dateimanagern wie Finder, Windows-Explorer, Nautilus oder Dolphin werden Dateien gewöhnlich als Liste oder Symbole auf einem Arbeitsblatt (Fenster, Ordner u. a.) dargestellt.
Siehe auch
Weblinks
Einzelnachweise
- „Datei“ als Duden-Eintrag
- „Datei“ bei Wiktionary