Filesystem library (since C++17)
La bibliothèque Filesystem fournit des fonctionnalités pour effectuer des opérations sur les systèmes de fichiers et leurs composants, tels que les chemins, les fichiers réguliers et les répertoires.
La bibliothèque filesystem a été initialement développée en tant que boost.filesystem , a été publiée comme la spécification technique ISO/IEC TS 18822:2015 , et finalement intégrée à l'ISO C++ à partir de C++17. L'implémentation boost est actuellement disponible sur plus de compilateurs et plateformes que la bibliothèque C++17.
Les fonctionnalités de la bibliothèque de système de fichiers peuvent être indisponibles si un système de fichiers hiérarchique n'est pas accessible à l'implémentation, ou s'il ne fournit pas les capacités nécessaires. Certaines fonctionnalités peuvent ne pas être disponibles si elles ne sont pas prises en charge par le système de fichiers sous-jacent (par exemple, le système de fichiers FAT ne supporte pas les liens symboliques et interdit les liens physiques multiples). Dans ces cas, des erreurs doivent être signalées.
Le comportement est indéfini si les appels aux fonctions de cette bibliothèque introduisent une course au système de fichiers , c'est-à-dire lorsque plusieurs threads, processus ou ordinateurs entrelacent l'accès et la modification du même objet dans un système de fichiers.
Table des matières |
Définitions à l'échelle de la bibliothèque
- fichier : un objet du système de fichiers qui contient des données, pouvant être écrit, lu, ou les deux. Les fichiers ont des noms, des attributs, dont l'un est le type de fichier :
-
- directory : un fichier qui agit comme un conteneur d'entrées de répertoire, qui identifient d'autres fichiers (dont certains peuvent être d'autres répertoires imbriqués). Lorsqu'on discute d'un fichier particulier, le répertoire dans lequel il apparaît comme une entrée est son parent directory . Le répertoire parent peut être représenté par le chemin relatif ".." .
- regular file : une entrée de répertoire qui associe un nom à un fichier existant (c'est-à-dire un hard link ). Si plusieurs liens physiques sont supportés, le fichier est supprimé après que le dernier lien physique vers lui soit supprimé.
- symbolic link : une entrée de répertoire qui associe un nom à un chemin, qui peut exister ou non.
- autres types de fichiers spéciaux : block , character , fifo , socket .
- nom de fichier : une chaîne de caractères qui nomme un fichier. Les caractères autorisés, la sensibilité à la casse, la longueur maximale et les noms interdits sont définis par l'implémentation. Les noms "." (point) et ".." (point-point) ont une signification spéciale au niveau de la bibliothèque.
- chemin : séquence d'éléments qui identifie un fichier. Il commence par un root-name optionnel (par ex. "C:" ou "//server" sous Windows), suivi d'un root-directory optionnel (par ex. "/" sous Unix), suivi d'une séquence de zéro ou plusieurs noms de fichiers (dont tous sauf le dernier doivent être des répertoires ou des liens vers des répertoires). Le format natif (par ex. quels caractères sont utilisés comme séparateurs) et l'encodage des caractères de la représentation sous forme de chaîne d'un chemin (le pathname ) sont définis par l'implémentation, cette bibliothèque fournit une représentation portable des chemins.
-
- chemin absolu : un chemin qui identifie sans ambiguïté l'emplacement d'un fichier.
- chemin canonique : un chemin absolu qui n'inclut aucun lien symbolique, "." ou ".." éléments.
- chemin relatif : un chemin qui identifie l'emplacement d'un fichier par rapport à un certain emplacement du système de fichiers. Les noms de chemin spéciaux "." (point, "répertoire courant") et ".." (point-point, "répertoire parent") sont des chemins relatifs.
Classes |
|
|
Défini dans l'en-tête
<filesystem>
|
|
|
Défini dans l'espace de noms
std::filesystem
|
|
|
(C++17)
|
représente un chemin
(classe) |
|
(C++17)
|
une exception levée lors d'erreurs du système de fichiers
(classe) |
|
(C++17)
|
une entrée de répertoire
(classe) |
|
(C++17)
|
un itérateur vers le contenu du répertoire
(classe) |
|
(C++17)
|
un itérateur vers le contenu d'un répertoire et de ses sous-répertoires
(classe) |
|
(C++17)
|
représente le type de fichier et les permissions
(classe) |
|
(C++17)
|
informations sur l'espace libre et disponible sur le système de fichiers
(classe) |
|
(C++17)
|
le type d'un fichier
(énumération) |
|
(C++17)
|
identifie les permissions du système de fichiers
(enum) |
|
(C++17)
|
spécifie la sémantique des opérations sur les permissions
(enum) |
|
(C++17)
|
spécifie la sémantique des opérations de copie
(enum) |
|
(C++17)
|
options pour l'itération du contenu des répertoires
(enum) |
|
(C++17)
|
représente les valeurs temporelles des fichiers
(typedef) |
Fonctions non membres |
|
|
Défini dans l'en-tête
<filesystem>
|
|
|
Défini dans l'espace de noms
std::filesystem
|
|
|
(C++17)
|
compose un chemin absolu
(fonction) |
|
(C++17)
|
compose un chemin canonique
(fonction) |
|
(C++17)
|
compose un chemin relatif
(fonction) |
|
(C++17)
|
copie des fichiers ou des répertoires
(fonction) |
|
(C++17)
|
copie le contenu des fichiers
(fonction) |
|
(C++17)
|
copie un lien symbolique
(fonction) |
|
(C++17)
(C++17)
|
crée un nouveau répertoire
(fonction) |
|
(C++17)
|
crée un lien physique
(fonction) |
|
(C++17)
(C++17)
|
crée un lien symbolique
(fonction) |
|
(C++17)
|
retourne ou définit le répertoire de travail courant
(fonction) |
|
(C++17)
|
vérifie si le chemin fait référence à un objet de système de fichiers existant
(fonction) |
|
(C++17)
|
vérifie si deux chemins font référence au même objet du système de fichiers
(fonction) |
|
(C++17)
|
retourne la taille d'un fichier
(fonction) |
|
(C++17)
|
retourne le nombre de liens physiques référençant le fichier spécifique
(fonction) |
|
(C++17)
|
obtient ou définit l'heure de la dernière modification des données
(fonction) |
|
(C++17)
|
modifie les permissions d'accès aux fichiers
(fonction) |
|
(C++17)
|
obtient la cible d'un lien symbolique
(fonction) |
|
(C++17)
(C++17)
|
supprime un fichier ou un répertoire vide
supprime un fichier ou un répertoire et tout son contenu, récursivement (fonction) |
|
(C++17)
|
déplace ou renomme un fichier ou un répertoire
(fonction) |
|
(C++17)
|
modifie la taille d'un fichier régulier par troncation ou remplissage par des zéros
(fonction) |
|
(C++17)
|
détermine l'espace libre disponible sur le système de fichiers
(fonction) |
|
(C++17)
(C++17)
|
détermine les attributs de fichier
détermine les attributs de fichier, en vérifiant la cible du lien symbolique (fonction) |
|
(C++17)
|
retourne un répertoire approprié pour les fichiers temporaires
(fonction) |
Types de fichiers |
|
|
(C++17)
|
vérifie si le chemin donné fait référence à un périphérique bloc
(fonction) |
|
(C++17)
|
vérifie si le chemin donné fait référence à un périphérique de caractères
(fonction) |
|
(C++17)
|
vérifie si le chemin donné fait référence à un répertoire
(fonction) |
|
(C++17)
|
vérifie si le chemin donné fait référence à un fichier ou répertoire vide
(fonction) |
|
(C++17)
|
vérifie si le chemin donné correspond à un tube nommé
(fonction) |
|
(C++17)
|
vérifie si l'argument fait référence à un fichier
autre
(fonction) |
|
(C++17)
|
vérifie si l'argument fait référence à un fichier régulier
(fonction) |
|
(C++17)
|
vérifie si l'argument fait référence à un socket IPC nommé
(fonction) |
|
(C++17)
|
vérifie si l'argument fait référence à un lien symbolique
(fonction) |
|
(C++17)
|
vérifie si le statut du fichier est connu
(fonction) |
Notes
L'utilisation de cette bibliothèque peut nécessiter des options supplémentaires de compilation/édition des liens. L'implémentation GNU antérieure à la version 9.1 nécessite l'édition des liens avec
-lstdc++fs
et l'implémentation LLVM antérieure à LLVM 9.0 nécessite l'édition des liens avec
-lc++fs
.
| Macro de test de fonctionnalité | Valeur | Std | Fonctionnalité |
|---|---|---|---|
__cpp_lib_filesystem
|
201703L
|
(C++17) | Bibliothèque de système de fichiers |
Voir aussi
|
Documentation C++
pour
File System TS
|