Espacios de nombres
Variantes
Acciones

std::filesystem::rename

De cppreference.com
 
 
 
Definido en el archivo de encabezado <filesystem>
void rename(const std::filesystem::path& old_p,

            const std::filesystem::path& new_p);
void rename(const std::filesystem::path& old_p,
            const std::filesystem::path& new_p,

            std::error_code& ec) noexcept;
(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, entonces new_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 que new_p se ha borrado, el nombre de ruta de acceso new_p se enlaza al archivo y old_p se desenlaza del archivo. Se requieren los permisos de escritura tanto para el directorio que contiene a old_p como para el directorio que contiene a new_p.
  • un archivo no existente a un directorio existente: El nombre de ruta de acceso new_p se enlaza al archivo y old_p se desenlaza del archivo. Se requieren los permisos de escritura tanto para el directorio que contiene a old_p como para el directorio que contiene a new_p.
  • Si old_p es un directorio, entonces new_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 borra new_p, luego, sin permitir que otros procesos observen que new_p se ha borrado, el nombre de ruta de acceso new_p se enlaza al directorio y old_p se desenlaza del directorio. Se requieren los permisos de escritura tanto para el directorio que contiene a old_p como para el directorio que contiene a new_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 y old_p se desenlaza del directorio. Se requieren los permisos de escritura tanto para el directorio que contiene a old_p como para el directorio que contiene a new_p.
  • No se siguen los enlaces simbólicos: si old_p es un enlace simbólico, este se renombra, pero no su objetivo. Si new_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 de new_p.

Contenido