Namespaces
Variants

Filesystem library (since C++17)

From cppreference.net

Die Filesystem-Bibliothek bietet Einrichtungen zum Ausführen von Operationen auf Dateisystemen und deren Komponenten, wie Pfade, reguläre Dateien und Verzeichnisse.

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

Die Dateisystem-Bibliothekfunktionen können möglicherweise nicht verfügbar sein, wenn ein hierarchisches Dateisystem für die Implementierung nicht zugänglich ist oder wenn es die notwendigen Fähigkeiten nicht bereitstellt. Einige Funktionen sind möglicherweise nicht verfügbar, wenn sie vom zugrundeliegenden Dateisystem nicht unterstützt werden (z.B. fehlen im FAT-Dateisystem symbolische Links und mehrere Hardlinks sind nicht erlaubt). In diesen Fällen müssen Fehler gemeldet werden.

Das Verhalten ist undefined , wenn Aufrufe von Funktionen in dieser Bibliothek einen file system race verursachen, das heißt, wenn mehrere Threads, Prozesse oder Computer den Zugriff und die Modifikation desselben Objekts in einem Dateisystem überlappen.

Inhaltsverzeichnis

Bibliotheksweite Definitionen

  • file : ein Dateisystemobjekt, das Daten enthält und in das geschrieben oder aus dem gelesen werden kann oder beides. Dateien haben Namen, Attribute, von denen eines der Dateityp ist:
  • directory : eine Datei, die als Container für Verzeichniseinträge fungiert, die andere Dateien identifizieren (einige davon können andere, verschachtelte Verzeichnisse sein). Bei der Diskussion einer bestimmten Datei ist das Verzeichnis, in dem sie als Eintrag erscheint, ihr parent directory . Das übergeordnete Verzeichnis kann durch den relativen Pfadnamen ".." dargestellt werden.
  • regular file : ein Verzeichniseintrag, der einen Namen mit einer bestehenden Datei verknüpft (d.h. einen hard link ). Wenn mehrere Hardlinks unterstützt werden, wird die Datei entfernt, nachdem der letzte Hardlink darauf entfernt wurde.
  • symbolic link : ein Verzeichniseintrag, der einen Namen mit einem Pfad verknüpft, der existieren kann oder nicht.
  • andere spezielle Dateitypen: block , character , fifo , socket .
  • Dateiname : eine Zeichenkette, die eine Datei benennt. Zulässige Zeichen, Groß-/Kleinschreibung, maximale Länge und unzulässige Namen sind implementierungsdefiniert. Die Namen "." (Punkt) und ".." (Punkt-Punkt) haben auf Bibliotheksebene spezielle Bedeutung.
  • Pfad : eine Folge von Elementen, die eine Datei identifiziert. Er beginnt mit einem optionalen root-name (z.B. "C:" oder "//server" unter Windows), gefolgt von einem optionalen root-directory (z.B. "/" unter Unix), gefolgt von einer Folge von null oder mehr Dateinamen (von denen alle bis auf den letzten Verzeichnisse oder Links zu Verzeichnissen sein müssen). Das native Format (z.B. welche Zeichen als Trennzeichen verwendet werden) und die Zeichenkodierung der Zeichenkettenrepräsentation eines Pfads (der Pfadname ) ist implementierungsdefiniert; diese Bibliothek bietet eine portable Darstellung von Pfaden.
  • absolute path : ein Pfad, der den Speicherort einer Datei eindeutig identifiziert.
  • canonical path : ein absoluter Pfad, der keine Symlinks, "." oder ".." Elemente enthält.
  • relative path : ein Pfad, der den Speicherort einer Datei relativ zu einem bestimmten Ort im Dateisystem identifiziert. Die speziellen Pfadnamen "." (Punkt, "aktuelles Verzeichnis") und ".." (Punkt-Punkt, "übergeordnetes Verzeichnis") sind relative Pfade.

Klassen

Definiert im Header <filesystem>
Definiert im namespace std::filesystem
(C++17)
repräsentiert einen Pfad
(Klasse)
Eine Ausnahme, die bei Dateisystemfehlern ausgelöst wird
(Klasse)
Ein Verzeichniseintrag
(Klasse)
ein Iterator für die Inhalte des Verzeichnisses
(Klasse)
Ein Iterator für die Inhalte eines Verzeichnisses und seiner Unterverzeichnisse
(Klasse)
repräsentiert Dateityp und Berechtigungen
(Klasse)
(C++17)
Informationen über freien und verfügbaren Speicherplatz im Dateisystem
(Klasse)
(C++17)
der Typ einer Datei
(enum)
(C++17)
identifiziert Dateisystemberechtigungen
(enum)
spezifiziert die Semantik von Berechtigungsoperationen
(enum)
legt die Semantik von Kopiervorgängen fest
(enum)
Optionen für die Iteration von Verzeichnisinhalten
(enum)
repräsentiert Dateizeitwerte
(typedef)

Nicht-Member-Funktionen

Definiert im Header <filesystem>
Definiert im namespace std::filesystem
(C++17)
bildet einen absoluten Pfad
(Funktion)
bildet einen kanonischen Pfad
(Funktion)
erstellt einen relativen Pfad
(Funktion)
(C++17)
kopiert Dateien oder Verzeichnisse
(Funktion)
(C++17)
kopiert Dateiinhalte
(Funktion)
kopiert einen symbolischen Link
(Funktion)
erstellt neues Verzeichnis
(Funktion)
erstellt einen Hardlink
(Funktion)
erstellt eine symbolische Verknüpfung
(Funktion)
gibt das aktuelle Arbeitsverzeichnis zurück oder setzt es
(Funktion)
(C++17)
prüft, ob der Pfad auf ein existierendes Dateisystemobjekt verweist
(Funktion)
(C++17)
prüft, ob zwei Pfade auf dasselbe Dateisystemobjekt verweisen
(Funktion)
(C++17)
gibt die Größe einer Datei zurück
(Funktion)
gibt die Anzahl der Hardlinks zurück, die auf die spezifische Datei verweisen
(Funktion)
ruft oder setzt die Zeit der letzten Datenänderung
(Funktion)
ändert Dateizugriffsberechtigungen
(Funktion)
ermittelt das Ziel eines symbolischen Links
(Funktion)
(C++17) (C++17)
entfernt eine Datei oder leeres Verzeichnis
entfernt eine Datei oder Verzeichnis und alle dessen Inhalte rekursiv
(Funktion)
(C++17)
verschiebt oder benennt eine Datei oder ein Verzeichnis um
(Funktion)
ändert die Größe einer regulären Datei durch Kürzung oder Auffüllung mit Nullen
(Funktion)
(C++17)
ermittelt den verfügbaren freien Speicherplatz im Dateisystem
(Funktion)
(C++17) (C++17)
bestimmt Dateiattribute
bestimmt Dateiattribute, überprüft das Symlink-Ziel
(Funktion)
gibt ein Verzeichnis zurück, das für temporäre Dateien geeignet ist
(Funktion)
Dateitypen
prüft, ob der angegebene Pfad auf ein Blockgerät verweist
(Funktion)
prüft, ob der angegebene Pfad auf ein Zeichengerät verweist
(Funktion)
prüft, ob der angegebene Pfad auf ein Verzeichnis verweist
(Funktion)
(C++17)
prüft, ob der angegebene Pfad auf eine leere Datei oder ein leeres Verzeichnis verweist
(Funktion)
(C++17)
prüft, ob der angegebene Pfad auf eine Named Pipe verweist
(Funktion)
(C++17)
prüft, ob das Argument auf eine andere Datei verweist
(Funktion)
prüft, ob das Argument auf eine reguläre Datei verweist
(Funktion)
(C++17)
prüft, ob das Argument auf einen benannten IPC-Socket verweist
(Funktion)
(C++17)
prüft, ob das Argument auf einen symbolischen Link verweist
(Funktion)
prüft, ob der Dateistatus bekannt ist
(Funktion)

Hinweise

Die Verwendung dieser Bibliothek kann zusätzliche Compiler/Linker-Optionen erfordern. 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 Funktion
__cpp_lib_filesystem 201703L (C++17) Filesystem-Bibliothek

Siehe auch

C++ Dokumentation für File System TS