std::filesystem::copy_options
| Definido en el archivo de encabezado <filesystem>
|
||
enum class copy_options { none = /* no especificado */, skip_existing = /* no especificado */, overwrite_existing = /* no especificado */, update_existing = /* no especificado */, recursive = /* no especificado */, copy_symlinks = /* no especificado */, skip_symlinks = /* no especificado */, directories_only = /* no especificado */, create_symlinks = /* no especificado */, create_hard_links = /* 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.
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. |
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
Véase también
(C++17) |
Copia archivos o directorios. (función) |
(C++17) |
Copia el contenido de un archivo. (función) |