std::filesystem:: copy_file
|
Definido en el encabezado
<filesystem>
|
||
|
bool
copy_file
(
const
std::
filesystem
::
path
&
from,
const std:: filesystem :: path & to ) ; |
(1) | (desde C++17) |
|
bool
copy_file
(
const
std::
filesystem
::
path
&
from,
const
std::
filesystem
::
path
&
to,
|
(2) | (desde C++17) |
|
bool
copy_file
(
const
std::
filesystem
::
path
&
from,
const
std::
filesystem
::
path
&
to,
|
(3) | (desde C++17) |
|
bool
copy_file
(
const
std::
filesystem
::
path
&
from,
const
std::
filesystem
::
path
&
to,
|
(4) | (desde C++17) |
copy_options::none
utilizado como
options
.
- Si !filesystem::is_regular_file(from) (ya sea porque el archivo fuente no existe o porque no es un archivo regular), reporta un error.
- De lo contrario, si el archivo destino no existe,
-
- copia los contenidos y atributos del archivo al que from resuelve hacia el archivo al que to resuelve (los enlaces simbólicos son seguidos).
- De lo contrario, si el archivo destino ya existe,
-
- reporta un error si cualquiera de los siguientes es verdadero:
-
- to y from son el mismo según lo determinado por filesystem::equivalent(from, to) ;
- to no es un archivo regular según lo determinado por !filesystem::is_regular_file(to) ;
- ninguna de las opciones de control de filesystem::copy_file están establecidas en options .
-
De lo contrario, si
copy_options::skip_existingestá establecido en options , no hace nada. -
De lo contrario, si
copy_options::overwrite_existingestá establecido en options , copia los contenidos y atributos del archivo al que from resuelve hacia el archivo al que to resuelve. -
De lo contrario, si
copy_options::update_existingestá establecido en options , solo copia el archivo si from es más reciente que to , según lo definido por filesystem::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
Cualquier sobrecarga no marcada como
noexcept
puede lanzar
std::bad_alloc
si la asignación de memoria falla.
Notas
Las funciones involucran como máximo una llamada directa o indirecta a
filesystem::status(to)
(utilizada tanto para determinar si el archivo existe, como, para la opción
filesystem::copy_options::update_existing
, su hora de última escritura).
Se reporta un error cuando filesystem::copy_file se utiliza para copiar un directorio: use filesystem::copy para eso.
filesystem::copy_file
sigue enlaces simbólicos: use
filesystem::copy_symlink
o
filesystem::copy
con
filesystem::copy_options::copy_symlinks
para eso.
Ejemplo
#include <filesystem> #include <fstream> #include <iostream> namespace fs = std::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"
Informes de defectos
Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.
| DR | Aplicado a | Comportamiento publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 3014 | C++17 |
error_code
sobrecarga marcada noexcept pero puede asignar memoria
|
noexcept eliminado |
Véase también
|
(C++17)
|
especifica la semántica de las operaciones de copia
(enum) |
|
(C++17)
|
copia un enlace simbólico
(function) |
|
(C++17)
|
copia archivos o directorios
(function) |