std::experimental::filesystem:: create_directory, std::experimental::filesystem:: create_directories
From cppreference.net
<
cpp
|
experimental
|
fs
|
Definido en el encabezado
<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)
Crea el directorio
p
como si fuera mediante
mkdir()
de POSIX con un segundo argumento de
static_cast
<
int
>
(
fs
::
perms
::
all
)
(el directorio padre debe existir previamente). Si
p
ya existe y es un directorio, la función no hace nada (esta condición no se trata como un error).
2)
Igual que
(1)
, excepto que los atributos del nuevo directorio se copian desde
existing_p
(que debe ser un directorio existente). Depende del sistema operativo qué atributos se copian: en sistemas POSIX, los atributos se copian como si fuera mediante
En Windows OS, los atributos se copian como si fuera mediante
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)
Ejecuta
(1)
para cada elemento de
p
que aún no existe.
Las sobrecargas que no lanzan excepciones retornan false si ocurre cualquier error.
Contenidos |
Parámetros
| p | - | la ruta al nuevo directorio a crear |
| existing_p | - | la ruta a un directorio del cual copiar los atributos |
| ec | - | parámetro de salida para reporte de errores en la sobrecarga que no lanza excepciones |
Valor de retorno
1,2)
true
si la creación del directorio es exitosa,
false
en caso contrario.
Excepciones
1,3)
La sobrecarga que no toma un parámetro
error_code
&
lanza
filesystem_error
en errores de API del sistema operativo subyacente, construido con
p
como primer argumento y el código de error del SO como argumento de código de error.
std::
bad_alloc
puede ser lanzado si falla la asignación de memoria. La sobrecarga que toma un parámetro
error_code
&
lo establece al código de error de la API del SO si una llamada a la API del SO falla, y ejecuta
ec.
clear
(
)
si no ocurren errores. Esta sobrecarga tiene
noexcept
especificación:
noexcept
2)
La sobrecarga que no toma un parámetro
error_code
&
lanza
filesystem_error
en errores de API del sistema operativo subyacente, construido con
p
como primer argumento,
existing_p
como segundo argumento, y el código de error del sistema operativo como argumento de código de error.
std::
bad_alloc
puede ser lanzado si falla la asignación de memoria. La sobrecarga que toma un parámetro
error_code
&
lo establece al código de error de la API del sistema operativo si una llamada a la API del sistema operativo falla, y ejecuta
ec.
clear
(
)
si no ocurren errores. Esta sobrecarga tiene
noexcept
especificación:
noexcept
Notas
La sobrecarga que preserva atributos (2) es invocada implícitamente por copy() cuando se copian directorios recursivamente. Su equivalente en boost.filesystem es copy_directory (con el orden de argumentos invertido).
Ejemplo
Ejecutar este código
#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"); }
Salida posible:
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
Véase también
|
crea un enlace simbólico
(función) |
|
|
copia archivos o directorios
(función) |
|
|
identifica permisos del sistema de archivos
(enumeración) |