Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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, zoalsc:\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
pathslaat 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
codecvtfacetten. Als er geen specifiek landinstellingsobject is opgegeven, worden deze facetten verkregen uit de globale landinstelling.- Een door null beëindigde reeks,
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
Bedieners
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 |