Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Zahrňte hlavičku <filesystem> pro přístup ke třídám a funkcím, které manipulují a načítají informace o cestách, souborech a adresářích.
Syntaxe
#include <filesystem> // C++17 standard header file name
#include <experimental/filesystem> // Header file for pre-standard implementation
using namespace std::experimental::filesystem::v1;
Důležité
Ve verzi sady Visual Studio 2017 <filesystem> ještě hlavička nebyla standardem C++. C++ v sadě Visual Studio 2017 RTW implementuje finální normu konceptu, kterou najdete v ISO/IEC JTC 1/SC 22/WG 21 N4100. Visual Studio 2017 verze 15.7 a novější podporuje nový standard C++17 <filesystem> .
Jedná se o zcela novou implementaci nekompatibilní s předchozí std::experimental verzí. Bylo nutné provést podporu symlinku, opravy chyb a změny standardního chování. V sadě Visual Studio 2019 verze 16.3 a novější, včetně toho, že <filesystem> poskytuje pouze nové std::filesystem. Zahrnutí <experimental/filesystem> poskytuje pouze starou experimental implementaci. Implementace experimental se odebere v příští vydané verzi knihovny ABI.
Tato hlavička podporuje systémy souborů pro jednu ze dvou širokých tříd hostitelských operačních systémů: Microsoft Windows a POSIX.
I když je většina funkcí pro oba operační systémy společná, tento dokument identifikuje, kde dochází k rozdílům. Příklad:
Systém Windows podporuje více kořenových názvů, například
c:.\\network_nameSystém souborů se skládá z doménové struktury stromů, z nichž každý má vlastní kořenový adresář, napříkladc:\nebo\\network_name\, a každý s vlastním aktuálním adresářem pro dokončení relativního názvu cesty (ten není absolutním názvem cesty).POSIX podporuje jeden strom, bez kořenového názvu, jednoho kořenového adresáře
/a jednoho aktuálního adresáře.
Dalším významným rozdílem je nativní reprezentace názvů pathname:
Systém Windows používá sekvenci
wchar_ts ukončenou hodnotou null , kódovanou jako UTF-16 (jeden nebo více prvků pro každý znak).POSIX používá sekvenci
chars ukončenou hodnotou null , zakódovanou jako UTF-8 (jeden nebo více prvků pro každý znak).Objekt třídy
pathukládá název cesty v nativním formuláři, ale podporuje snadný převod mezi tímto uloženým formulářem a několika externími formuláři:Sekvence
chars ukončenou hodnotou null , kódovaná jako upřednostňovaná operačním systémem.Sekvence
chars ukončenou hodnotou null , kódovaná jako UTF-8.Sekvence
wchar_ts ukončenou hodnotou null , kódovaná jako upřednostňovaná operačním systémem.Sekvence
char16_ts ukončenou hodnotou null , kódovaná jako UTF-16.Sekvence
char32_ts ukončenou hodnotou null , kódovaná jako UTF-32.
Mezikonverze mezi těmito reprezentacemi jsou podle potřeby meditovány použitím jedné nebo více
codecvtomezujících vlastností. Pokud není zadán žádný konkrétní objekt národního prostředí, tyto omezující vlastnosti jsou získány z globálního národního prostředí.
Dalším rozdílem je podrobnosti, se kterými jednotlivé operační systémy umožňují zadat přístupová oprávnění k souborům nebo adresářům:
Systém Windows zaznamenává, zda je soubor jen pro čtení nebo zapisovatelný, atribut, který nemá význam pro adresáře.
POSIX zaznamenává, zda lze soubor číst, zapisovat nebo spouštět (naskenovaný, pokud adresář). A jestli je každá operace povolená pro vlastníka, skupinu vlastníka nebo pro všechny, a navíc několik dalších oprávnění.
Společné pro oba systémy je struktura uložená na název cesty, jakmile se dostanete za kořenový název. Pro název cesty c:/abc/xyz/def.ext:
Kořenový název je
c:.Kořenový adresář je
/.Kořenová cesta je
c:/.Relativní cesta je
abc/xyz/def.ext.Nadřazená cesta je
c:/abc/xyz.Název souboru je
def.ext.Kmen je
def.Rozšíření je
.ext.
Menší rozdíl je upřednostňovaným oddělovačem mezi sekvencí adresářů v názvu cesty. Oba operační systémy umožňují psát lomítko /, ale v některých kontextech Windows preferuje zpětné lomítko \. Implementace ukládá upřednostňovaný oddělovač do datového členu preferred_separator v path.
path A konečně, objekty mají důležitou funkci: Můžete je použít všude, kde je argument název souboru požadován ve třídách definovaných v záhlaví <fstream>.
Další informace a příklady kódu najdete v tématu Navigace v systému souborů (C++).
Členové
Třídy
| Název | Popis |
|---|---|
Třída directory_entry |
Popisuje objekt, který je vrácen nebo directory_iterator recursive_directory_iterator a obsahuje path. |
Třída directory_iterator |
Popisuje vstupní iterátor, který sekvencuje názvy souborů v adresáři systému souborů. |
Třída filesystem_error |
Základní třída pro výjimky, které jsou vyvolány k hlášení přetečení systému nízké úrovně. |
Třída path |
Definuje třídu, která ukládá objekt typu String šablony, který je vhodný pro použití jako název souboru. |
Třída recursive_directory_iterator |
Popisuje vstupní iterátor, který sekvencuje názvy souborů v adresáři systému souborů. Iterátor může také sestupně do podadresářů. |
Třída file_status |
Zabalí ...file_type |
Struktury
| Název | Popis |
|---|---|
space_info struktura |
Obsahuje informace o svazku. |
Funkce
Operátory
Výčty
| Název | Popis |
|---|---|
copy_options |
Výčet, který se používá s copy_file a určuje chování, pokud cílový soubor již existuje. |
directory_options |
Výčet, který určuje možnosti pro iterátory adresáře. |
file_type |
Výčet pro typy souborů. |
perm_options |
Vytvoří výčet možností pro permissions funkci. |
perms |
Typ bitové masky používaný ke sdělení oprávnění a možností oprávnění |