Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Fügen Sie für den aktuellen Code den C++17-Standardheader <filesystem> hinzu, und verwenden Sie den std::filesystem Namespace für Klassen und Funktionen, die Informationen zu Pfaden, Dateien und Verzeichnissen bearbeiten und abrufen. Kompilieren mit /std:c++17 oder höher.
Syntax
#include <filesystem> // C++17 standard header file name
using namespace std::filesystem;
Note
Historischer Hinweis: Vor C++17 standardisiert <filesystem>hat MSVC eine separate Vorabimplementierung im <experimental/filesystem> Header ausgeliefert, die ab MSVC Build Tools, Version 14.51, entfernt wurde. Die Dokumentation finden Sie unter <experimental/filesystem>.
Der <filesystem> Header unterstützt Dateisysteme für Microsoft Windows und POSIX.
Der überwiegende Teil der Funktionalität ist für beide Betriebssysteme gleich. In diesem Dokuments sind die Unterschiede aufgeführt. Zum Beispiel:
- Windows unterstützt mehrere Stammnamen, z
c:. B. oder\\network_name. Ein Dateisystem besteht aus einer Gesamtstruktur von Bäumen, die jeweils ein eigenes Stammverzeichnisc:\wie oder\\network_name\, und jedes mit seinem eigenen aktuellen Verzeichnis, zum Abschließen eines relativen Pfadnamens (einer, der kein absoluter Pfadname ist). - POSIX unterstützt eine einzelne Struktur ohne Stammnamen, das einzelne Stammverzeichnis
/und ein einzelnes aktuelles Verzeichnis.
Ein weiterer wichtiger Unterschied ist die systemeigene Darstellung von Pfadnamen:
Windows verwendet eine null-beendete Sequenz von
wchar_t, die als UTF-16 codiert ist (mindestens ein Element für jedes Zeichen).POSIX verwendet eine null-beendete Sequenz von
char, codiert als UTF-8 (ein oder mehrere Elemente für jedes Zeichen).Ein Objekt der Klasse
pathspeichert den Pfadnamen in systemeigenem Format, unterstützt jedoch die einfache Konvertierung zwischen diesem gespeicherten Formular und mehreren externen Formularen:- Eine null-beendete Sequenz von
char, die vom Betriebssystem bevorzugt wird. - Eine null-beendete Sequenz von
char, codiert als UTF-8. - Eine null-beendete Sequenz von
wchar_t, die vom Betriebssystem bevorzugt wird. - Eine null-beendete Sequenz von
char16_t, codiert als UTF-16. - Eine null-beendete Sequenz von
char32_t, codiert als UTF-32.
Gegenseitige Konvertierungen zwischen diesen Darstellungen werden nach Bedarf dadurch vermittelt, dass mindestens ein
codecvt-Facet verwendet wird. Wenn kein bestimmtes Gebietsschemaobjekt angegeben wird, werden diese Facets aus dem globalen Gebietsschema abgerufen.- Eine null-beendete Sequenz von
Ein weiterer Unterschied ist das Detail, über das das jeweilige Betriebssystem Ihnen die Möglichkeit gibt, Datei- oder Verzeichniszugriffsberechtigungen anzugeben:
- Windows zeichnet auf, ob eine Datei schreibgeschützt oder schreibgeschützt ist, ein Attribut, das keine Bedeutung für Verzeichnisse hat.
- POSIX zeichnet auf, ob eine Datei gelesen, geschrieben oder ausgeführt werden kann (gescannt, wenn ein Verzeichnis). Und unabhängig davon, ob jeder Vorgang für den Besitzer, die Gruppe des Besitzers oder für alle zulässig ist, sowie einige andere Berechtigungen.
Beiden Systemen gemeinsam ist die Struktur, die für einen Pfadnamen gilt, sobald Sie über den Stammnamen hinausgelangen. Für den Pfadnamen c:/abc/xyz/def.ext:
- Der Stammname lautet
c:. - Das Stammverzeichnis ist
/. - Der Stammpfad ist
c:/. - Der relative Pfad lautet
abc/xyz/def.ext. - Der übergeordnete Pfad lautet
c:/abc/xyz. - Der Dateiname ist
def.ext. - Der Stamm ist
def. - Die Erweiterung lautet
.ext.
Ein kleiner Unterschied ist das bevorzugte Trennzeichen zwischen der Reihenfolge der Verzeichnisse in einem Pfadnamen. Beide Betriebssysteme ermöglichen es Ihnen, einen Schrägstrich zu schreiben, aber in einigen Kontexten bevorzugt Windows einen umgekehrten Schrägstrich/\. Die Implementierung speichert das bevorzugte Trennzeichen im Datenelement preferred_separator in path.
path Schließlich weisen Objekte ein wichtiges Feature auf: Sie können diese verwenden, wo immer ein Dateinamenargument in den klassen erforderlich ist, die in der Kopfzeile <fstream>definiert sind.
Weitere Informationen und Codebeispiele finden Sie unter Dateisystemnavigation (C++).
Klassen
| name | Beschreibung |
|---|---|
directory_entry-Klasse |
Beschreibt ein Objekt, das von einem directory_iterator oder einem recursive_directory_iterator Objekt zurückgegeben wird und ein path. |
directory_iterator-Klasse |
Beschreibt einen Eingabeiterator, der alle Dateinamen in einem Dateisystemverzeichnis durchläuft. |
filesystem_error-Klasse |
Eine Basisklasse für Ausnahmen, die ausgelöst werden, um einen Systemfehler auf niedriger Ebene zu melden. |
path-Klasse |
Definiert eine Klasse, die ein für die Verwendung als Dateiname geeignetes Objekt des Vorlagentyps String speichert. |
recursive_directory_iterator-Klasse |
Beschreibt einen Eingabeiterator, der alle Dateinamen in einem Dateisystemverzeichnis durchläuft. Der Iterator kann die Verzeichnisse auch absteigend anordnen. |
file_status-Klasse |
Bricht ein file_typeum. |
Strukturen
| name | Beschreibung |
|---|---|
space_info-Struktur |
Enthält Informationen zu einem Volume. |
Funktionen
<filesystem>
-Funktionen
Operatoren
Enumerationen
| name | Beschreibung |
|---|---|
copy_options |
Eine mit copy_file verwendete Enumeration, mit der das Verhalten bestimmt wird, wenn eine Datei vorhanden ist. |
directory_options |
Eine Enumeration, die Optionen für Verzeichnisiteratoren angibt. |
file_type |
Eine Enumeration für Dateitypen. |
perm_options |
Listet Optionen für die permissions Funktion auf. |
perms |
Ein Bitmaskentyp, mit dem Berechtigungen und Optionen zu Berechtigungen übermittelt werden. |