Espacios de nombres
Variantes
Acciones

std::filesystem::copy_options

De cppreference.com
 
 
 
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.

[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) [editar]
(C++17)
Copia el contenido de un archivo.
(función) [editar]