filesystem

Dołącz nagłówek <filesystem> umożliwiający dostęp do klas i funkcji, które manipulują ścieżkami, plikami i katalogami oraz pobierają informacje o nich.

Składnia

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

Ważne

W wydaniu programu Visual Studio 2017 <filesystem> nagłówek nie był jeszcze standardem C++. Język C++ w programie Visual Studio 2017 RTW implementuje ostateczny standard roboczy, który znajduje się w standardzie ISO/IEC JTC 1/SC 22/WG 21 N4100. Program Visual Studio 2017 w wersji 15.7 lub nowszej obsługuje nowy standard C++17 <filesystem> . Jest to zupełnie nowa implementacja niezgodna z poprzednią std::experimental wersją. Została ona wprowadzona przez obsługę linków symlinkowych, poprawki błędów i zmiany w standardowym wymaganym zachowaniu. W programie Visual Studio 2019 w wersji 16.3 lub nowszej, w tym <filesystem> tylko nowe std::filesystem. Uwzględnia <experimental/filesystem> tylko starą experimental implementację. Implementacja experimental zostanie usunięta w następnej wersji bibliotek powodującej niezgodność z architekturą ABI.

Ten nagłówek obsługuje systemy plików dla jednej z dwóch szerokich klas systemów operacyjnych hosta: Microsoft Windows i POSIX.

Chociaż większość funkcji jest powszechna dla obu systemów operacyjnych, w tym dokumencie opisano, gdzie występują różnice. Przykład:

  • System Windows obsługuje wiele nazw głównych, takich jak c: lub \\network_name. System plików składa się z lasu drzew, każdy z własnym katalogiem głównym, takim jak c:\ lub \\network_name\, i każdy z własnym bieżącym katalogiem, do ukończenia względnej nazwy ścieżki (takiej, która nie jest bezwzględną nazwą ścieżki).

  • System POSIX obsługuje pojedyncze drzewo bez nazwy głównej, pojedynczego katalogu /głównego i pojedynczego bieżącego katalogu.

Inną znaczącą różnicą jest natywna reprezentacja nazw ścieżek:

  • System Windows używa sekwencji zakończonej wartości null klasy , zakodowanej wchar_tjako UTF-16 (co najmniej jeden element dla każdego charaktuatora).

  • System POSIX używa sekwencji zakończonej wartości null klasy , zakodowanej charjako UTF-8 (co najmniej jeden element dla każdego charaktuatora).

  • Obiekt klasy path przechowuje ścieżkę w postaci natywnej, ale obsługuje łatwą konwersję między tym przechowywanym formularzem a kilkoma formularzami zewnętrznymi:

    • Sekwencja o wartości null zakodowana charjako preferowana przez system operacyjny.

    • Sekwencja z wartością null zakodowana charjako UTF-8.

    • Sekwencja o wartości null zakodowana wchar_tjako preferowana przez system operacyjny.

    • Zakończona wartość null sekwencja char16_t, zakodowana jako UTF-16.

    • Zakończona wartość null sekwencja char32_tklasy , zakodowana jako UTF-32.

    Interkonwersje między tymi reprezentacjami są w razie potrzeby pośredniczone przy użyciu co najmniej jednego codecvt aspektu. Jeśli nie określono określonego obiektu ustawień regionalnych, te aspekty są uzyskiwane z globalnych ustawień regionalnych.

Inną różnicą jest szczegóły, z którymi każdy system operacyjny umożliwia określenie uprawnień dostępu do plików lub katalogów:

  • System Windows rejestruje, czy plik jest tylko do odczytu, czy zapisywalny, atrybut, który nie ma znaczenia dla katalogów.

  • PoSIX rejestruje, czy plik może być odczytywany, zapisywany lub wykonywany (skanowany, jeśli katalog). Niezależnie od tego, czy każda operacja jest dozwolona dla właściciela, grupy właściciela, czy dla wszystkich, oraz kilku innych uprawnień.

Typowe dla obu systemów jest struktura nałożona na nazwę ścieżki po wklejeniu nazwy głównej. Dla ścieżki nazwa_ c:/abc/xyz/def.extścieżki :

  • Nazwa główna to c:.

  • Katalog główny to /.

  • Ścieżka główna to c:/.

  • Ścieżka względna to abc/xyz/def.ext.

  • Ścieżka nadrzędna to c:/abc/xyz.

  • Nazwa pliku to def.ext.

  • Łodyga to def.

  • Rozszerzenie to .ext.

Niewielka różnica jest preferowanym separatorem między sekwencją katalogów w ścieżce pathname. Oba systemy operacyjne umożliwiają napisanie ukośnika /do przodu, ale w niektórych kontekstach system Windows preferuje ukośnik \odwrotny. Implementacja przechowuje preferowany separator w elemencie członkowskim preferred_separator danych w pathpliku .

Na koniec obiekty mają ważną funkcję: można ich używać wszędzie tam, path gdzie argument nazwy pliku jest wymagany w klasach zdefiniowanych w nagłówku <fstream>.

Aby uzyskać więcej informacji i przykładów kodu, zobacz Nawigacja po systemie plików (C++).

Członkowie

Klasy

Nazwa/nazwisko opis
Klasa directory_entry Opisuje obiekt, który jest zwracany przez obiekt directory_iterator lub i recursive_directory_iterator zawiera pathelement .
Klasa directory_iterator Opisuje iterator wejściowy, który sekwencjonuje nazwy plików w katalogu systemu plików.
Klasa filesystem_error Klasa podstawowa dla wyjątków zgłaszanych w celu raportowania przepełnienia systemu niskiego poziomu.
Klasa path Definiuje klasę, która przechowuje obiekt typu String szablonu, który jest odpowiedni do użycia jako nazwa pliku.
Klasa recursive_directory_iterator Opisuje iterator wejściowy, który sekwencjonuje nazwy plików w katalogu systemu plików. Iterator może również zejść do podkatalogów.
Klasa file_status Zawija element file_type.

Struktury

Nazwa/nazwisko opis
space_info Struktury Zawiera informacje o woluminie.

Funkcje

<filesystem>, funkcje

Operatory

<filesystem>, operatory

Wyliczenia

Nazwa/nazwisko opis
copy_options Wyliczenie używane z copy_file i określa zachowanie, jeśli plik docelowy już istnieje.
directory_options Wyliczenie określające opcje iteratorów katalogów.
file_type Wyliczenie typów plików.
perm_options Wylicza opcje funkcji permissions .
perms Typ maski bitowej używany do przekazywania uprawnień i opcji uprawnień

Zobacz też

Odwołanie do plików nagłówka