Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
För aktuell kod inkluderar du standardrubriken <filesystem> C++17 och använder std::filesystem namnområdet för klasser och funktioner som manipulerar och hämtar information om sökvägar, filer och kataloger. Kompilera med /std:c++17 eller senare.
Syntax
#include <filesystem> // C++17 standard header file name
using namespace std::filesystem;
Anmärkning
Historisk anmärkning: Innan C++17 standardiserades <filesystem>levererade MSVC en separat förstandardimplementering i <experimental/filesystem> rubriken, som togs bort med början i MSVC Build Tools version 14.51. Dokumentationen finns i <experimental/filesystem>.
Rubriken <filesystem> stöder filsystem för Microsoft Windows och POSIX.
De flesta funktioner är gemensamma för båda operativsystemen, men det här dokumentet identifierar var skillnader uppstår. Ett exempel:
- Windows stöder flera rotnamn, till exempel
c:eller\\network_name. Ett filsystem består av en skog med träd, var och en med en egen rotkatalog, till exempelc:\eller\\network_name\, och var och en med sin egen aktuella katalog, för att slutföra ett relativt sökvägsnamn (ett som inte är ett absolut sökvägsnamn). - POSIX har stöd för ett enda träd, utan rotnamn, enskild rotkatalog
/och en enda aktuell katalog.
En annan betydande skillnad är den interna representationen av pathnames:
Windows använder en null-avslutad sekvens av
wchar_t, kodad som UTF-16 (ett eller flera element för varje tecken).POSIX använder en null-avslutad sekvens av
char, kodad som UTF-8 (ett eller flera element för varje tecken).Ett objekt i klassen
pathlagrar pathname i intern form, men stöder enkel konvertering mellan det här lagrade formuläret och flera externa formulär:- En null-avslutad sekvens av
char, kodad som gynnad av operativsystemet. - En null-avslutad sekvens av
char, kodad som UTF-8. - En null-avslutad sekvens av
wchar_t, kodad som gynnad av operativsystemet. - En null-avslutad sekvens av
char16_t, kodad som UTF-16. - En null-avslutad sekvens av
char32_t, kodad som UTF-32.
Interkonversioner mellan dessa representationer förmedlas efter behov genom användning av en eller flera
codecvtfasetter. Om inget specifikt språkobjekt har angetts hämtas dessa fasetter från det globala nationella språket.- En null-avslutad sekvens av
En annan skillnad är den information med vilken varje operativsystem låter dig ange behörigheter för fil- eller katalogåtkomst:
- Windows registrerar om en fil är skrivskyddad eller skrivbar, ett attribut som inte har någon betydelse för kataloger.
- POSIX registrerar om en fil kan läsas, skrivas eller köras (genomsöks, om en katalog). Och om varje åtgärd är tillåten för ägaren, ägarens grupp eller för alla, plus några andra behörigheter.
Gemensamt för båda systemen är strukturen som läggs på ett sökvägsnamn när du kommer förbi rotnamnet. För pathname c:/abc/xyz/def.ext:
- Rotnamnet är
c:. - Rotkatalogen är
/. - Rotsökvägen är
c:/. - Den relativa sökvägen är
abc/xyz/def.ext. - Den överordnade sökvägen är
c:/abc/xyz. - Filnamnet är
def.ext. - Stammen är
def. - Tillägget är
.ext.
En mindre skillnad är den föredragna avgränsaren mellan sekvensen av kataloger i ett sökvägsnamn. Med båda operativsystemen kan du skriva ett snedstreck /, men i vissa sammanhang föredrar Windows ett omvänt snedstreck \. Implementeringen lagrar sin föredragna avgränsare i datamedlemmen preferred_separator i path.
Slutligen path har objekt en viktig funktion: Du kan använda dem varhelst ett filnamnsargument krävs i de klasser som definieras i rubriken <fstream>.
Mer information och kodexempel finns i Filsystemnavigering (C++).
Klasserna
| Name | Beskrivning |
|---|---|
directory_entry klass |
Beskriver ett objekt som returneras av en directory_iterator eller en recursive_directory_iterator och innehåller en path. |
directory_iterator klass |
Beskriver en indata-iterator som sekvenser genom filnamnen i en filsystemkatalog. |
filesystem_error klass |
En basklass för undantag som genereras för att rapportera ett systemfel på låg nivå. |
path klass |
Definierar en klass som lagrar ett objekt av malltyp String som är lämpligt för användning som filnamn. |
recursive_directory_iterator klass |
Beskriver en indata-iterator som sekvenser genom filnamnen i en filsystemkatalog. Iteratorn kan också sjunka till underkataloger. |
file_status klass |
Omsluter en file_type. |
Strukturer
| Name | Beskrivning |
|---|---|
space_info struktur |
Innehåller information om en volym. |
Functions
Operators
Enumerations
| Name | Beskrivning |
|---|---|
copy_options |
En uppräkning som används med copy_file och avgör beteendet om en målfil redan finns. |
directory_options |
En uppräkning som anger alternativ för katalog iteratorer. |
file_type |
En uppräkning för filtyper. |
perm_options |
Räknar upp alternativ för permissions funktionen. |
perms |
En bitmasktyp som används för att förmedla behörigheter och alternativ till behörigheter |