filesystem

Fügen Sie den Header <filesystem> für den Zugriff auf Klassen und Funktionen ein, die Informationen zu Pfaden, Dateien und Verzeichnissen bearbeiten und abrufen.

Syntax

#include <filesystem> // C++17 standard header file name
#include <experimental/filesystem> // Header file for pre-standard implementation
using namespace std::experimental::filesystem::v1;

Wichtig

Bei der Version von Visual Studio 2017 war der <filesystem> Header noch kein C++-Standard. C++ in Visual Studio 2017 RTW implementiert den endgültigen Standardentwurf, der in ISO/IEC JTC 1/SC 22/WG 21 N4100 enthalten ist. Visual Studio 2017, Version 15.7 und höher, unterstützt den neuen C++17-Standard <filesystem> . Dies ist eine völlig neue Implementierung, die nicht mit der vorherigen std::experimental Version kompatibel ist. Es wurde von symlink-Unterstützung, Bugfixes und Änderungen des standardmäßig erforderlichen Verhaltens erforderlich gemacht. In Visual Studio 2019, Version 16.3 und höher, wird <filesystem> nur das neue std::filesystembereitgestellt. Das Einschließen <experimental/filesystem> stellt nur die alte experimental Implementierung bereit. Die experimental Implementierung wird in der nächsten ABI-bahnbrechenden Version der Bibliotheken entfernt.

Dieser Header unterstützt Dateisysteme für eine von zwei breiten Klassen von Hostbetriebssystemen: Microsoft Windows und POSIX.

Der überwiegende Teil der Funktionalität ist für beide Betriebssysteme gleich. In diesem Dokuments sind die Unterschiede aufgeführt. 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 Stammverzeichnis c:\ 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-gekündigte Sequenz von wchar_t, die als UTF-16 codiert ist (ein oder mehrere Elemente für jeden charAkter).

  • POSIX verwendet eine null-beendete Sequenz von char, codiert als UTF-8 (ein oder mehrere Elemente für jeden charAkter).

  • Ein Objekt der Klasse path speichert 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.

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++).

Mitglieder

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 Systemüberlauf 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

<filesystem> 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.

Siehe auch

Referenz zu Headerdateien