std::filesystem::rename
De cppreference.com
< cpp | filesystem
Definido en el archivo de encabezado <filesystem>
|
||
void rename(const std::filesystem::path& old_p, const std::filesystem::path& new_p); |
(desde C++17) | |
Mueve o renombra el objeto de sistema de archivos identificado por old_p
a new_p
como si fuera por la función rename
de POSIX:
- Si
old_p
es un archivo que no es un directorio, entoncesnew_p
debe ser uno de:
- el mismo archivo que
old_p
o un enlace físico a él: no se hace nada en este caso. - un archivo existente que no es un directorio : primero se borra
new_p
, luego, sin permitir que otros procesos observen quenew_p
se ha borrado, el nombre de ruta de accesonew_p
se enlaza al archivo yold_p
se desenlaza del archivo. Se requieren los permisos de escritura tanto para el directorio que contiene aold_p
como para el directorio que contiene anew_p
. - un archivo no existente a un directorio existente: El nombre de ruta de acceso
new_p
se enlaza al archivo yold_p
se desenlaza del archivo. Se requieren los permisos de escritura tanto para el directorio que contiene aold_p
como para el directorio que contiene anew_p
.
- el mismo archivo que
- Si
old_p
es un directorio, entoncesnew_p
debe ser uno de:
- el mismo directorio que
old_p
o un enlace físico a él: no se hace nada en este caso. - un directorio existente:
new_p
se borra si está vacío en los sistemas POSIX, pero esto puede ser un error en otros sistemas. Si no es un error, entonces primero se borranew_p
, luego, sin permitir que otros procesos observen quenew_p
se ha borrado, el nombre de ruta de accesonew_p
se enlaza al directorio yold_p
se desenlaza del directorio. Se requieren los permisos de escritura tanto para el directorio que contiene aold_p
como para el directorio que contiene anew_p
. - un directorio no existente que no termina con el separador de directorios, y cuyo directorio padre existe: El nombre de ruta de acceso
new_p
se enlaza al directorio yold_p
se desenlaza del directorio. Se requieren los permisos de escritura tanto para el directorio que contiene aold_p
como para el directorio que contiene anew_p
.
- el mismo directorio que
- No se siguen los enlaces simbólicos: si
old_p
es un enlace simbólico, este se renombra, pero no su objetivo. Sinew_p
es un enlace simbólico existente, este se borra, pero no su objetivo.
La función de renombre de archivos fracasa si:
-
new_p
termina con punto o con punto-punto; -
new_p
denomina a un directorio no existente que termina con el separador de directorios; -
old_p
es un directorio que es un ancestro denew_p
.
Contenido |