std::experimental::filesystem:: create_directory, std::experimental::filesystem:: create_directories
From cppreference.net
<
cpp
|
experimental
|
fs
|
Défini dans l'en-tête
<experimental/filesystem>
|
||
|
bool
create_directory
(
const
path
&
p
)
;
bool create_directory ( const path & p, error_code & ec ) ; |
(1) | (filesystem TS) |
|
bool
create_directory
(
const
path
&
p,
const
path
&
existing_p
)
;
bool create_directory ( const path & p, const path & existing_p, error_code & ec ) ; |
(2) | (filesystem TS) |
|
bool
create_directories
(
const
path
&
p
)
;
bool create_directories ( const path & p, error_code & ec ) ; |
(3) | (filesystem TS) |
1)
Crée le répertoire
p
comme avec la fonction POSIX
mkdir()
avec un second argument de
static_cast
<
int
>
(
fs
::
perms
::
all
)
(le répertoire parent doit déjà exister). Si
p
existe déjà et est déjà un répertoire, la fonction ne fait rien (cette condition n'est pas traitée comme une erreur).
2)
Identique à
(1)
, sauf que les attributs du nouveau répertoire sont copiés depuis
existing_p
(qui doit être un répertoire existant). Les attributs copiés dépendent du système d'exploitation : sur les systèmes POSIX, les attributs sont copiés comme par
Sur le système Windows, les attributs sont copiés comme par
stat(existing_p.c_str(), &attributes_stat) mkdir(p.c_str(), attributes_stat.st_mode)
CreateDirectoryExW(existing_p.c_str(), p.c_str(), 0)
3)
Exécute
(1)
pour chaque élément de
p
qui n'existe pas déjà.
Les surcharges non levantes retournent false si une erreur se produit.
Table des matières |
Paramètres
| p | - | le chemin vers le nouveau répertoire à créer |
| existing_p | - | le chemin vers un répertoire à partir duquel copier les attributs |
| ec | - | paramètre de sortie pour le rapport d'erreurs dans la surcharge non-lancante |
Valeur de retour
1,2)
true
si la création du répertoire réussit,
false
sinon.
Exceptions
1,3)
La surcharge qui ne prend pas de paramètre
error_code
&
lance
filesystem_error
en cas d'erreurs de l'API système sous-jacente, construite avec
p
comme premier argument et le code d'erreur du système comme argument de code d'erreur.
std::
bad_alloc
peut être levée si l'allocation de mémoire échoue. La surcharge prenant un paramètre
error_code
&
le définit sur le code d'erreur de l'API système si un appel d'API système échoue, et exécute
ec.
clear
(
)
si aucune erreur ne survient. Cette surcharge a la spécification
noexcept
:
noexcept
2)
La surcharge qui ne prend pas de paramètre
error_code
&
lance
filesystem_error
en cas d'erreurs de l'API système sous-jacente, construite avec
p
comme premier argument,
existing_p
comme deuxième argument, et le code d'erreur du système comme argument de code d'erreur.
std::
bad_alloc
peut être lancée si l'allocation mémoire échoue. La surcharge prenant un paramètre
error_code
&
le définit sur le code d'erreur de l'API système si un appel d'API système échoue, et exécute
ec.
clear
(
)
si aucune erreur ne survient. Cette surcharge possède la spécification
noexcept
:
noexcept
Notes
La surcharge préservant les attributs (2) est implicitement invoquée par copy() lors de la copie récursive de répertoires. Son équivalent dans boost.filesystem est copy_directory (avec l'ordre des arguments inversé).
Exemple
Exécuter ce code
#include <cstdlib> #include <experimental/filesystem> #include <fstream> #include <iostream> namespace fs = std::experimental::filesystem; int main() { fs::create_directories("sandbox/1/2/a"); fs::create_directory("sandbox/1/2/b"); fs::permissions("sandbox/1/2/b", fs::perms::remove_perms | fs::perms::others_all); fs::create_directory("sandbox/1/2/c", "sandbox/1/2/b"); std::system("ls -l sandbox/1/2"); fs::remove_all("sandbox"); }
Sortie possible :
drwxr-xr-x 2 user group 4096 Apr 15 09:33 a drwxr-x--- 2 user group 4096 Apr 15 09:33 b drwxr-x--- 2 user group 4096 Apr 15 09:33 c
Voir aussi
|
crée un lien symbolique
(fonction) |
|
|
copie des fichiers ou répertoires
(fonction) |
|
|
identifie les permissions du système de fichiers
(énumération) |