filesystem
Incluez l’en-tête <filesystem>
pour accéder aux classes et fonctions qui manipulent et récupèrent des informations sur les chemins d’accès, les fichiers et les répertoires.
Syntaxe
#include <filesystem> // C++17 standard header file name
#include <experimental/filesystem> // Header file for pre-standard implementation
using namespace std::experimental::filesystem::v1;
Important
Dans la version de Visual Studio 2017, l’en-tête <filesystem>
n’était pas encore une norme C++. C++ dans Visual Studio 2017 RTW implémente le projet final de norme, trouvé dans ISO/IEC JTC 1/SC 22/WG 21 N4100. Visual Studio 2017 version 15.7 et ultérieure prend en charge la nouvelle norme C++17 <filesystem>
.
Il s’agit d’une nouvelle implémentation, incompatible avec la version précédente std::experimental
. Elle a été rendue nécessaire par la prise en charge de symlink, les correctifs de bogues et les modifications apportées au comportement standard requis. Dans Visual Studio 2019 version 16.3 et ultérieures, y compris <filesystem>
fournit uniquement le nouveau std::filesystem
. Inclut <experimental/filesystem>
uniquement l’ancienne experimental implémentation. L’implémentation experimental sera supprimée dans la prochaine version ABI des bibliothèques.
Cet en-tête prend en charge les systèmes de fichiers pour l’une des deux grandes classes de systèmes d’exploitation hôtes : Microsoft Windows et POSIX.
Bien que la plupart des fonctionnalités soit communes aux deux systèmes d’exploitation, ce document met l’accent sur les différences. Par exemple :
Windows prend en charge plusieurs noms racines, tels que
c:
ou\\network_name
. Un système de fichiers se compose d’une forêt d’arborescences, chacun avec son propre répertoire racine, tel quec:\
ou\\network_name\
, et chacun avec son propre répertoire actif, pour terminer un nom de chemin relatif (un nom de chemin d’accès non absolu).POSIX prend en charge une arborescence unique, sans nom racine, le répertoire
/
racine unique et un seul répertoire actif.
Une autre différence importante réside dans la représentation native des chemins :
Windows utilise une séquence terminée par null ,
wchar_t
encodée en UTF-16 (un ou plusieurs éléments pour chaque caractère).POSIX utilise une séquence terminée par null de
char
, encodée en UTF-8 (un ou plusieurs éléments pour chaque caractère).Un objet de classe
path
stocke le chemin d’accès sous forme native, mais prend en charge la conversion facile entre ce formulaire stocké et plusieurs formulaires externes :Séquence terminée par null de
char
, encodée comme favorisée par le système d’exploitation.Séquence terminée par null de
char
, encodée en UTF-8.Séquence terminée par null de
wchar_t
, encodée comme favorisée par le système d’exploitation.Séquence terminée par null de
char16_t
, encodée en UTF-16.Séquence terminée par null de
char32_t
, encodée en UTF-32.
Selon les besoins, les conversions entre ces représentations passent par une ou plusieurs facettes
codecvt
. Si aucun objet de paramètres régionaux spécifique n’est spécifié, ces facettes sont obtenues à partir des paramètres régionaux globaux.
Il existe une autre différence, la précision avec laquelle chaque système d’exploitation vous permet de spécifier les autorisations d’accès aux fichiers ou répertoires :
Windows enregistre si un fichier est en lecture seule ou accessible en écriture, un attribut qui n’a aucune signification pour les répertoires.
POSIX enregistre si un fichier peut être lu, écrit ou exécuté (analysé, si un répertoire). Et, que chaque opération soit autorisée pour le propriétaire, le groupe du propriétaire ou pour tout le monde, ainsi que quelques autres autorisations.
Pour les deux systèmes, la structure imposée au chemin après le nom de la racine est la même. Pour le chemin c:/abc/xyz/def.ext
d’accès :
Le nom racine est
c:
.Le répertoire racine est
/
.Le chemin racine est
c:/
.Le chemin relatif est
abc/xyz/def.ext
.Le chemin d’accès parent est
c:/abc/xyz
.Le nom de fichier est
def.ext
.La tige est
def
.L’extension est
.ext
.
Une différence mineure est le séparateur préféré entre la séquence de répertoires dans un chemin d’accès. Les deux systèmes d’exploitation vous permettent d’écrire une barre oblique /
, mais dans certains contextes, Windows préfère une barre oblique \
inverse. L’implémentation stocke son séparateur préféré dans le membre preferred_separator
de données dans path
.
Enfin, path
les objets ont une fonctionnalité importante : vous pouvez les utiliser partout où un argument de nom de fichier est requis dans les classes définies dans l’en-tête <fstream>
.
Pour plus d’informations et d’exemples de code, consultez navigation dans le système de fichiers (C++).
Membres
Classes
Nom | Description |
---|---|
directory_entry , classe |
Décrit un objet retourné par un directory_iterator ou un recursive_directory_iterator et contient un path . |
directory_iterator , classe |
Décrit un itérateur d'entrée qui parcourt les noms de fichiers dans un répertoire de système de fichiers. |
filesystem_error , classe |
Classe de base pour les exceptions qui sont levées pour signaler un dépassement de capacité du système de bas niveau. |
path , classe |
Définit une classe qui stocke un objet de type de modèle String qui peut être utilisé comme nom de fichier. |
recursive_directory_iterator , classe |
Décrit un itérateur d'entrée qui parcourt les noms de fichiers dans un répertoire de système de fichiers. L'itérateur peut également descendre dans des sous-répertoires. |
file_status , classe |
Encapsule un file_type . |
Structures
Nom | Description |
---|---|
Structure space_info |
Contient des informations sur un volume. |
Functions
Opérateurs
Énumérations
Nom | Description |
---|---|
copy_options |
Énumération utilisée avec copy_file qui détermine le comportement si un fichier de destination existe déjà. |
directory_options |
Énumération qui spécifie les options pour les itérateurs de répertoire. |
file_type |
Énumération pour les types de fichiers. |
perm_options |
Énumère les options de la permissions fonction. |
perms |
Type de masque de bits utilisé pour transmettre les autorisations et les options des autorisations |