<filesystem>

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 exempel c:\ 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 path lagrar 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 codecvt fasetter. Om inget specifikt språkobjekt har angetts hämtas dessa fasetter från det globala nationella språket.

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

<filesystem> funktioner

Operators

<filesystem> operatorer

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

Se även

Referens för rubrikfiler