<filesystem>

Neem voor de huidige code de standaard-C++17-header <filesystem> op en gebruik de std::filesystem naamruimte voor klassen en functies die informatie over paden, bestanden en mappen bewerken en ophalen. Compileer met /std:c++17 of hoger.

Syntaxis

#include <filesystem> // C++17 standard header file name
using namespace std::filesystem;

Opmerking

Historische opmerking: Voordat C++17 gestandaardiseerd <filesystem>werd, heeft MSVC een afzonderlijke standaardimplementatie verzonden in de <experimental/filesystem> header, die werd verwijderd vanaf MSVC Build Tools versie 14.51. Zie voor de bijbehorende documentatie <experimental/filesystem>.

De <filesystem> header ondersteunt bestandssystemen voor Microsoft Windows en POSIX.

Hoewel de meeste functionaliteit gebruikelijk is voor beide besturingssystemen, wordt in dit document aangegeven waar verschillen optreden. Voorbeeld:

  • Windows ondersteunt meerdere hoofdnamen, zoals c: of \\network_name. Een bestandssysteem bestaat uit een forest met bomen, elk met een eigen hoofdmap, zoals c:\ of \\network_name\, en elk met een eigen huidige map, voor het voltooien van een relatieve padnaam (een die geen absolute padnaam is).
  • POSIX ondersteunt één structuur, zonder hoofdnaam, één hoofdmap /en één huidige map.

Een ander belangrijk verschil is de systeemeigen weergave van padnamen:

  • Windows maakt gebruik van wchar_teen null-beëindigde reeks, gecodeerd als UTF-16 (een of meer elementen voor elk teken).

  • POSIX maakt gebruik van een null-beëindigde reeks, chargecodeerd als UTF-8 (een of meer elementen voor elk teken).

  • Een object van klasse path slaat de padnaam op in systeemeigen vorm, maar ondersteunt eenvoudige conversie tussen dit opgeslagen formulier en verschillende externe formulieren:

    • Een door null beëindigde reeks, chargecodeerd door het besturingssysteem.
    • Een door null beëindigde reeks, chargecodeerd als UTF-8.
    • Een door null beëindigde reeks, wchar_tgecodeerd door het besturingssysteem.
    • Een door null beëindigde reeks, char16_tgecodeerd als UTF-16.
    • Een door null beëindigde reeks, char32_tgecodeerd als UTF-32.

    Interconversie tussen deze representaties wordt, indien nodig, gemediateerd door het gebruik van een of meer codecvt facetten. Als er geen specifiek landinstellingsobject is opgegeven, worden deze facetten verkregen uit de globale landinstelling.

Een ander verschil is de details waarmee u met elk besturingssysteem machtigingen voor toegang tot bestanden of mappen kunt opgeven:

  • Windows records of een bestand alleen-lezen of beschrijfbaar is, een kenmerk dat geen betekenis heeft voor mappen.
  • POSIX-records of een bestand kan worden gelezen, geschreven of uitgevoerd (gescand, als een map). En of elke bewerking is toegestaan voor de eigenaar, de groep van de eigenaar of voor iedereen, plus enkele andere machtigingen.

Gebruikelijk voor beide systemen is de structuur die wordt opgelegd aan een padnaam zodra u de hoofdnaam hebt geplakt. Voor de padnaam c:/abc/xyz/def.ext:

  • De hoofdnaam is c:.
  • De hoofdmap is /.
  • Het hoofdpad is c:/.
  • Het relatieve pad is abc/xyz/def.ext.
  • Het bovenliggende pad is c:/abc/xyz.
  • De bestandsnaam is def.ext.
  • De stengel is def.
  • De extensie is .ext.

Een klein verschil is het voorkeursscheidingsteken tussen de reeks mappen in een padnaam. Met beide besturingssystemen kunt u een slash /schrijven, maar in sommige contexten Windows liever een backslash\. De implementatie slaat het voorkeursscheidingsteken op in het gegevenslid preferred_separator in path.

Ten slotte path hebben objecten een belangrijke functie: u kunt ze gebruiken waar een bestandsnaamargument is vereist in de klassen die zijn gedefinieerd in de koptekst <fstream>.

Zie Bestandssysteemnavigatie (C++) voor meer informatie en codevoorbeelden.

Klassen

Name Beschrijving
directory_entry klasse Beschrijft een object dat wordt geretourneerd door een directory_iterator of a recursive_directory_iterator en bevat een path.
directory_iterator klasse Beschrijft een invoer-iterator die de bestandsnamen in een bestandssysteemmap doorloopt.
filesystem_error klasse Een basisklasse voor uitzonderingen die worden gegenereerd om een systeemfout op laag niveau te rapporteren.
path klasse Definieert een klasse waarin een object van het sjabloontype String wordt opgeslagen dat geschikt is voor gebruik als bestandsnaam.
recursive_directory_iterator klasse Beschrijft een invoer-iterator die de bestandsnamen in een bestandssysteemmap doorloopt. De iterator kan ook aflopen in submappen.
file_status klasse Verpakt een file_type.

Structuren

Name Beschrijving
space_info structuur Bevat informatie over een volume.

Functions

<filesystem> functies

Bedieners

<filesystem> operators

Enumerations

Name Beschrijving
copy_options Een opsomming die wordt gebruikt met copy_file en bepaalt gedrag als er al een doelbestand bestaat.
directory_options Een opsomming waarmee opties voor directory-iterators worden opgegeven.
file_type Een opsomming voor bestandstypen.
perm_options Opsomming van opties voor de permissions functie.
perms Een bitmaskertype dat wordt gebruikt voor het overbrengen van machtigingen en opties voor machtigingen

Zie ook

Verwijzing naar headerbestanden