std::filesystem::copy_options
Definido en el archivo de encabezado <filesystem>
|
||
enum class copy_options { none = /* no especificado */, |
(desde C++17) | |
Este tipo representa las opciones disponibles que controlan el comportamiento de las funciones copy() y copy_file().
copy_options
satisface los requerimientos de BitmaskType (que significa que los operadores bit a bit operator&, operator|, operator^, operator~, operator&=, operator|=, y operator^= se definen para este tipo). none
representa la máscara vacía de bits (bitmask); cada otro enumerador representa un elemento distinto de la máscara de bits.
[editar] Constantes 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 no está definido.
Constante miembro | Significado |
---|---|
Opciones que controlan a copy_file() cuando el archivo ya existe. | |
none
|
Informar de un error (comportamiento por defecto). |
skip_existing
|
Conservar el archivo existente, sin informar de 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 los subdirectorios. | |
none
|
Omitir los subdirectorios (comportamiento por defecto). |
recursive
|
Recursivamente copiar subdirectorios y su contenido. |
Opciones que controlan los efectos de copy() en los enlaces simbólicos. | |
none
|
Seguir los enlaces simbólicos (comportamiento por defecto). |
copy_symlinks
|
Copiar los enlaces simbólicos como enlaces simbólicos, no como los archivos a los que apuntan. |
skip_symlinks
|
Ignorar los enlaces simbólicos. |
Opciones que controlan el tipo de copiado que copy() hace. | |
none
|
Copiar el contenido del archivo (comportamiento por defecto). |
directories_only
|
Copia la estructura del directorio, pero no copiar ningún archivo que no sea del directorio. |
create_symlinks
|
En lugar de crear copias de archivos, crear enlaces simbólicos apuntando a los originales. Nota: la ruta de acceso 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 se resuelvan en los mismos archivos que los originales. |
[editar] Ejemplo
Este ejemplo demuestra la copia de archivos y directorios de forma no recursiva y recursiva. Requiere que el programa tree
esté presente para generar el árbol de directorios.
#include <cstdlib> #include <iostream> #include <fstream> #include <filesystem> namespace fs = std::filesystem; int main() { fs::create_directories("entorno/dir/subdir"); std::ofstream("entorno/archivo1.txt").put('a'); fs::copy("entorno/archivo1.txt", "entorno/archivo2.txt"); // copiar archivo fs::copy("entorno/dir", "entorno/dir2"); // copiar directorio (no recursivo) const auto opcDeCopia = fs::copy_options::update_existing | fs::copy_options::recursive | fs::copy_options::directories_only ; fs::copy("entorno", "copia_de_entorno", opcDeCopia); static_cast<void>(std::system("tree")); fs::remove_all("entorno"); fs::remove_all("copia_de_entorno"); }
Posible salida:
. ├── entorno │ ├── dir │ │ └── subdir │ ├── dir2 │ ├── archivo1.txt │ └── archivo2.txt └── copia_de_entorno ├── dir │ └── subdir └── dir2 8 directorios, 2 archivos
[editar] Véase también
(C++17) |
Copia archivos o directorios. (función) |
(C++17) |
Copia el contenido de un archivo. (función) |