Namespaces
Variants

std::experimental::filesystem:: create_directory, std::experimental::filesystem:: create_directories

From cppreference.net
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
stat(existing_p.c_str(), &attributes_stat)
mkdir(p.c_str(), attributes_stat.st_mode)
Sur le système Windows, les attributs sont copiés comme par
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

#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)