std::filesystem:: copy_options
|
Definido en el encabezado
<filesystem>
|
||
|
enum
class
copy_options
{
none
=
/* unspecified */
,
|
(desde C++17) | |
Este tipo representa las opciones disponibles que controlan el comportamiento de la copy() y la copy_file() función.
copy_options
satisface los requisitos de
BitmaskType
(lo que significa que los operadores bit a bit
operator
&
,
operator
|
,
operator
^
,
operator~
,
operator
&
=
,
operator
|
=
, y
operator
^
=
están definidos para este tipo).
none
representa la máscara de bits vacía; cada otro enumerador representa un elemento de máscara de bits distinto.
Constantes de miembro
A lo sumo, una opción de copia en cada uno de los siguientes grupos de opciones puede estar presente; de lo contrario, el comportamiento de las funciones de copia es indefinido.
| Constante de miembro | Significado |
|---|---|
| Opciones que controlan copy_file() cuando el archivo ya existe | |
none
|
Reportar un error (comportamiento predeterminado). |
skip_existing
|
Mantener el archivo existente, sin reportar un error. |
overwrite_existing
|
Reemplazar el archivo existente. |
update_existing
|
Reemplazar el archivo existente solo si es más antiguo que el archivo que se está copiando. |
| Opciones que controlan los efectos de copy() en subdirectorios | |
none
|
Omitir subdirectorios (comportamiento predeterminado). |
recursive
|
Copiar recursivamente subdirectorios y su contenido. |
| Opciones que controlan los efectos de copy() en enlaces simbólicos | |
none
|
Seguir enlaces simbólicos (comportamiento predeterminado). |
copy_symlinks
|
Copiar enlaces simbólicos como enlaces simbólicos, no como los archivos a los que apuntan. |
skip_symlinks
|
Ignorar enlaces simbólicos. |
| Opciones que controlan el tipo de copia que realiza copy() | |
none
|
Copiar contenido de archivos (comportamiento predeterminado). |
directories_only
|
Copiar la estructura de directorios, pero no copiar ningún archivo que no sea directorio. |
create_symlinks
|
En lugar de crear copias de archivos, crear enlaces simbólicos que apunten a los originales. Nota: la ruta de origen debe ser una ruta absoluta a menos que la ruta de destino esté en el directorio actual. |
create_hard_links
|
En lugar de crear copias de archivos, crear enlaces físicos que resuelvan a los mismos archivos que los originales. |
Ejemplo
#include <cstdlib> #include <filesystem> #include <fstream> #include <iostream> namespace fs = std::filesystem; int main() { fs::create_directories("sandbox/dir/subdir"); std::ofstream("sandbox/file1.txt").put('a'); fs::copy("sandbox/file1.txt", "sandbox/file2.txt"); // copiar archivo fs::copy("sandbox/dir", "sandbox/dir2"); // copiar directorio (no recursivo) const auto copyOptions = fs::copy_options::update_existing | fs::copy_options::recursive | fs::copy_options::directories_only ; fs::copy("sandbox", "sandbox_copy", copyOptions); static_cast<void>(std::system("tree")); fs::remove_all("sandbox"); fs::remove_all("sandbox_copy"); }
Salida posible:
.
├── sandbox
│ ├── dir
│ │ └── subdir
│ ├── dir2
│ ├── file1.txt
│ └── file2.txt
└── sandbox_copy
├── dir
│ └── subdir
└── dir2
8 directorios, 2 archivos
Véase también
|
(C++17)
|
copia archivos o directorios
(función) |
|
(C++17)
|
copia contenidos de archivos
(función) |