Namespaces
Variants

std::experimental::filesystem:: copy_file

From cppreference.net
Definido en el encabezado <experimental/filesystem>
bool copy_file ( const path & from, const path & to ) ;
bool copy_file ( const path & from, const path & to, error_code & ec ) ;
(1) (filesystem TS)
bool copy_file ( const path & from, const path & to, copy_options options ) ;
bool copy_file ( const path & from, const path & to, copy_options options, error_code & ec ) ;
(2) (filesystem TS)
1) El valor predeterminado, equivalente a (2) con copy_options::none utilizado como options .
2) Copia un único archivo desde from hacia to , utilizando las opciones de copia indicadas por options . El comportamiento es indefinido si hay más de una opción en cualquiera de los grupos de opciones copy_options presentes en options (incluso en los grupos no relevantes para copy_file ).
  • Si el archivo de destino no existe,
  • copia el contenido y los atributos del archivo al que from resuelve al archivo al que to resuelve (los enlaces simbólicos son seguidos).
  • De lo contrario, si el archivo de destino ya existe:
  • Si to y from son iguales según lo determinado por equivalent(from, to) , reportar un error.
  • De lo contrario, si ninguna de las opciones de control de copy_file está establecida en options , reportar un error.
  • De lo contrario, si copy_options::skip_existing está establecido en options , no hacer nada.
  • De lo contrario, si copy_options::overwrite_existing está establecido en options , copiar los contenidos y atributos del archivo al que from resuelve al archivo al que to resuelve.
  • De lo contrario, si copy_options::update_existing está establecido en options , solo copiar el archivo si from es más reciente que to , según lo definido por last_write_time() .

Las sobrecargas que no lanzan excepciones retornan false si ocurre un error.

Contenidos

Parámetros

from - ruta al archivo de origen
to - ruta al archivo de destino
ec - parámetro de salida para reporte de errores en la sobrecarga no lanzadora

Valor de retorno

true si el archivo fue copiado, false en caso contrario.

Excepciones

The overload that does not take an error_code & parameter throws filesystem_error on underlying OS API errors, constructed with from as the first argument, to as the second argument, and the OS error code as the error code argument. std:: bad_alloc may be thrown if memory allocation fails. The overload taking an error_code & parameter sets it to the OS API error code if an OS API call fails, and executes ec. clear ( ) if no errors occur. This overload has
noexcept especificación:
noexcept

Notas

Las funciones involucran como máximo una llamada directa o indirecta a status(to) (utilizada tanto para determinar si el archivo existe, como, para la opción copy_options::update_existing , su última hora de escritura).

Se reporta un error cuando copy_file se utiliza para copiar un directorio: use copy para eso.

copy_file sigue enlaces simbólicos: use copy_symlink o copy con copy_options::copy_symlinks para eso.

Ejemplo

#include <experimental/filesystem>
#include <fstream>
#include <iostream>
namespace fs = std::experimental::filesystem;
int main()
{
    fs::create_directory("sandbox");
    std::ofstream("sandbox/file1.txt").put('a');
    fs::copy_file("sandbox/file1.txt", "sandbox/file2.txt");
    // ahora hay dos archivos en sandbox:
    std::cout << "file1.txt holds : "
              << std::ifstream("sandbox/file1.txt").rdbuf() << '\n';
    std::cout << "file2.txt holds : "
              << std::ifstream("sandbox/file2.txt").rdbuf() << '\n';
    // fallo al copiar directorio
    fs::create_directory("sandbox/abc");
    try
    {
        fs::copy_file("sandbox/abc", "sandbox/def");
    }
    catch (fs::filesystem_error& e)
    {
        std::cout << "Could not copy sandbox/abc: " << e.what() << '\n';
    }
    fs::remove_all("sandbox");
}

Salida posible:

file1.txt holds : a
file2.txt holds : a
Could not copy sandbox/abc: copy_file: Is a directory: "sandbox/abc", "sandbox/def"

Véase también

especifica la semántica de las operaciones de copia
(enum)
copia un enlace simbólico
(función)
copia archivos o directorios
(función)