Namensräume
Varianten
Aktionen

Dateisystem-Bibliothek (seit C++17)

Von cppreference.com
< cpp
 
 
 

Die Dateisystem-Bibliothek bietet Einrichtungen zur Durchführung von Operationen auf Dateisystemen und deren Komponenten, wie z. B. Pfaden, regulären Dateien und Verzeichnissen.

Die Dateisystem-Bibliothek wurde ursprünglich als boost.filesystem entwickelt, wurde als technische Spezifikation ISO/IEC TS 18822:2015 veröffentlicht und schließlich mit C++17 in den ISO C++-Standard aufgenommen. Die Boost-Implementierung ist derzeit auf mehr Compilern und Plattformen verfügbar als die C++17-Bibliothek.

Die Einrichtungen der Dateisystem-Bibliothek sind möglicherweise nicht verfügbar, wenn ein hierarchisches Dateisystem für die Implementierung nicht zugänglich ist oder die notwendigen Fähigkeiten nicht bereitstellt. Einige Funktionen sind möglicherweise nicht verfügbar, wenn sie vom zugrunde liegenden Dateisystem nicht unterstützt werden (z. B. fehlt dem FAT-Dateisystem symbolische Links und es sind keine mehreren Hardlinks zulässig). In solchen Fällen müssen Fehler gemeldet werden.

Das Verhalten ist undefiniert, wenn Aufrufe von Funktionen in dieser Bibliothek zu einem Dateisystem-Race führen, d. h. wenn mehrere Threads, Prozesse oder Computer den Zugriff und die Modifikation desselben Objekts in einem Dateisystem miteinander verschachteln.

Inhalt

[bearbeiten] Bibliotheksweite Definitionen

  • Datei: ein Dateisystemobjekt, das Daten enthält und auf das geschrieben, von dem gelesen oder beides werden kann. Dateien haben Namen, Attribute, von denen eines der Dateityp ist.
  • Verzeichnis: eine Datei, die als Container für Verzeichniseinträge fungiert, welche andere Dateien identifizieren (von denen einige andere, verschachtelte Verzeichnisse sein können). Wenn über eine bestimmte Datei gesprochen wird, ist das Verzeichnis, in dem sie als Eintrag erscheint, ihr übergeordnetes Verzeichnis. Das übergeordnete Verzeichnis kann durch den relativen Pfadnamen ".." dargestellt werden.
  • reguläre Datei: ein Verzeichniseintrag, der einen Namen mit einer vorhandenen Datei (d. h. einem Hardlink) verknüpft. Wenn mehrere Hardlinks unterstützt werden, wird die Datei nach dem Entfernen des letzten Hardlinks zu ihr gelöscht.
  • symbolischer Link: ein Verzeichniseintrag, der einen Namen mit einem Pfad verknüpft, der existieren kann oder auch nicht.
  • andere spezielle Dateitypen: Block, Zeichen, FIFO, Socket.
  • Dateiname: eine Zeichenkette, die eine Datei benennt. Zulässige Zeichen, Groß-/Kleinschreibung, maximale Länge und nicht zulässige Namen sind implementierungsabhängig. Die Namen "." (Punkt) und ".." (Punkt-Punkt) haben auf Bibliotheksebene eine besondere Bedeutung.
  • Pfad: eine Sequenz von Elementen, die eine Datei identifiziert. Er beginnt mit einem optionalen Root-Namen (z. B. "C:" oder "//server" unter Windows), gefolgt von einem optionalen Root-Verzeichnis (z. B. "/" unter Unix), gefolgt von einer Sequenz von null oder mehr Dateinamen (alle außer dem letzten müssen Verzeichnisse oder Links zu Verzeichnissen sein). Das native Format (z. B. welche Zeichen als Trennzeichen verwendet werden) und die Zeichenkodierung der String-Repräsentation eines Pfades (des Pfadnamens) sind implementierungsabhängig; diese Bibliothek bietet eine portable Darstellung von Pfaden.
  • absoluter Pfad: ein Pfad, der den Speicherort einer Datei eindeutig identifiziert.
  • kanonischer Pfad: ein absoluter Pfad, der keine symbolischen Links, "."- oder ".."-Elemente enthält.
  • relativer Pfad: ein Pfad, der den Speicherort einer Datei relativ zu einem Speicherort im Dateisystem identifiziert. Die speziellen Pfadnamen "." (Punkt, "aktuelles Verzeichnis") und ".." (Punkt-Punkt, "übergeordnetes Verzeichnis") sind relative Pfade.

Klassen

Definiert in Header <filesystem>
Definiert im Namespace std::filesystem
(C++17)
repräsentiert einen Pfad
(Klasse) [bearbeiten]
eine Ausnahme, die bei Dateisystemfehlern ausgelöst wird
(Klasse) [bearbeiten]
ein Verzeichniseintrag
(Klasse) [bearbeiten]
ein Iterator für den Inhalt des Verzeichnisses
(Klasse) [bearbeiten]
ein Iterator für den Inhalt eines Verzeichnisses und seiner Unterverzeichnisse
(Klasse) [bearbeiten]
repräsentiert Dateityp und Berechtigungen
(Klasse) [bearbeiten]
Informationen über freien und verfügbaren Speicherplatz auf dem Dateisystem
(Klasse) [bearbeiten]
(C++17)
der Typ einer Datei
(Enum) [bearbeiten]
(C++17)
identifiziert Dateisystemberechtigungen
(Enum) [bearbeiten]
spezifiziert die Semantik von Berechtigungsoperationen
(Enum) [bearbeiten]
spezifiziert die Semantik von Kopiervorgängen
(Enum) [bearbeiten]
Optionen für das Iterieren über Verzeichnisinhalte
(Enum) [bearbeiten]
repräsentiert Datei-Zeitwerte
(Typedef) [bearbeiten]

Nicht-Member-Funktionen

Definiert in Header <filesystem>
Definiert im Namespace std::filesystem
(C++17)
komponiert einen absoluten Pfad
(Funktion) [bearbeiten]
komponiert einen kanonischen Pfad
(Funktion) [bearbeiten]
komponiert einen relativen Pfad
(Funktion) [bearbeiten]
(C++17)
kopiert Dateien oder Verzeichnisse
(Funktion) [bearbeiten]
(C++17)
kopiert Dateiinhalte
(Funktion) [bearbeiten]
kopiert einen symbolischen Link
(Funktion) [bearbeiten]
erstellt neues Verzeichnis
(Funktion) [bearbeiten]
erstellt einen Hardlink
(Funktion) [bearbeiten]
erstellt einen symbolischen Link
(Funktion) [bearbeiten]
gibt das aktuelle Arbeitsverzeichnis zurück oder setzt es
(Funktion) [bearbeiten]
(C++17)
prüft, ob ein Pfad auf ein existierendes Dateisystemobjekt verweist
(Funktion) [bearbeiten]
prüft, ob zwei Pfade auf dasselbe Dateisystemobjekt verweisen
(Funktion) [bearbeiten]
(C++17)
gibt die Größe einer Datei zurück
(Funktion) [bearbeiten]
gibt die Anzahl der Hardlinks zurück, die auf die spezifische Datei verweisen
(Funktion) [bearbeiten]
liest oder setzt die Zeit der letzten Datenmodifikation
(Funktion) [bearbeiten]
modifiziert Dateizugriffsberechtigungen
(Funktion) [bearbeiten]
ermittelt das Ziel eines symbolischen Links
(Funktion) [bearbeiten]
(C++17)(C++17)
entfernt eine Datei oder ein leeres Verzeichnis
entfernt eine Datei oder ein Verzeichnis und dessen gesamten Inhalt rekursiv
(Funktion) [bearbeiten]
(C++17)
verschiebt oder benennt eine Datei oder ein Verzeichnis um
(Funktion) [bearbeiten]
ändert die Größe einer regulären Datei durch Abschneiden oder Auffüllen mit Nullen
(Funktion) [bearbeiten]
ermittelt den verfügbaren freien Speicherplatz auf dem Dateisystem
(Funktion) [bearbeiten]
(C++17)(C++17)
ermittelt Dateiattribute
ermittelt Dateiattribute, wobei das Ziel des symbolischen Links geprüft wird
(Funktion) [bearbeiten]
gibt ein Verzeichnis zurück, das für temporäre Dateien geeignet ist
(Funktion) [bearbeiten]
Dateitypen
prüft, ob der gegebene Pfad auf ein Blockgerät verweist
(Funktion) [bearbeiten]
prüft, ob der gegebene Pfad auf ein Zeichengerät verweist
(Funktion) [bearbeiten]
prüft, ob der gegebene Pfad auf ein Verzeichnis verweist
(Funktion) [bearbeiten]
(C++17)
prüft, ob der gegebene Pfad auf eine leere Datei oder ein leeres Verzeichnis verweist
(Funktion) [bearbeiten]
(C++17)
prüft, ob der gegebene Pfad auf eine benannte Pipe verweist
(Funktion) [bearbeiten]
(C++17)
prüft, ob das Argument auf eine andere Datei verweist
(Funktion) [bearbeiten]
prüft, ob das Argument auf eine reguläre Datei verweist
(Funktion) [bearbeiten]
(C++17)
prüft, ob das Argument auf einen benannten IPC-Socket verweist
(Funktion) [bearbeiten]
prüft, ob das Argument auf einen symbolischen Link verweist
(Funktion) [bearbeiten]
prüft, ob der Dateistatus bekannt ist
(Funktion) [bearbeiten]

[bearbeiten] Anmerkungen

Die Verwendung dieser Bibliothek erfordert möglicherweise zusätzliche Compiler-/Linker-Optionen. Die GNU-Implementierung vor Version 9.1 erfordert das Linken mit -lstdc++fs, und die LLVM-Implementierung vor LLVM 9.0 erfordert das Linken mit -lc++fs.

Feature-Test-Makro Wert Std Feature
__cpp_lib_filesystem 201703L (C++17) Dateisystem-Bibliothek

[bearbeiten] Siehe auch

C++ Dokumentation für File System TS