std::filesystem::remove, std::filesystem::remove_all
Definido en el archivo de encabezado <filesystem> | ||
bool remove(conststd::filesystem::path& p ); bool remove(conststd::filesystem::path& p, std::error_code& ec )noexcept; | (1) | (desde C++17) |
std::uintmax_t remove_all(conststd::filesystem::path& p ); std::uintmax_t remove_all(conststd::filesystem::path& p, std::error_code& ec ); | (2) | (desde C++17) |
p
como si fuera por la función remove
de POSIX. No se siguen los enlaces simbólicos (se elimina el enlace simbólico, pero no su objetivo).p
(si es un directorio) y el contenido de todos sus subdirectorios recursivamente, luego borra a p
mismo como si se aplicara repetidamente la función remove
de POSIX. No se siguen los enlaces simbólicos (se elimina el enlace simbólico, pero no su objetivo).Contenido |
[editar]Parámetros
p | - | La ruta de acceso a borrar. |
ec | - | El parámetro de salida para informe de errores en la sobrecarga que no lanza excepciones. |
[editar]Valor de retorno
error_code&
devuelve false si ocurren errores.p
no existía). La sobrecarga que toma un argumento error_code&
devuelve static_cast<std::uintmax_t>(-1) si ocurren errores.[editar]Excepciones
La sobrecarga que no toma un parámetro std::error_code& lanza filesystem::filesystem_error en los errores de la API del sistema operativo subyacente, construido con p
como el primer argumento de la ruta de acceso y el código de error del sistema operativo como el argumento del código de error. La sobrecarga que toma un parámetro std::error_code& lo establece en el código de error de la API del sistema operativo si una llamada a la API del sistema operativo falla, y ejecuta ec.clear() si no ocurren errores. Cualquier sobrecarga que no está marcada con noexcept puede lanzar std::bad_alloc si la asignación de memoria falla.
[editar]Notas
En los sistemas POSIX, esta función generalmente llama a unlink
y rmdir
a medida que sea necesario, y en Windows, a RemoveDirectoryW
y DeleteFileW
.
[editar]Ejemplo
#include <iostream>#include <cstdint>#include <filesystem>namespace fs = std::filesystem;int main(){ fs::path tmp = fs::temp_directory_path(); fs::create_directories(tmp /"abcdef/ejemplo");std::uintmax_t n = fs::remove_all(tmp /"abcdef");std::cout<<"Se borraron "<< n <<" archivos o directorios\n";}
Posible salida:
Se borraron 2 archivos o directorios
[editar]Informes de defectos
Los siguientes informes de defectos de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.
ID | Aplicado a | Comportamiento según lo publicado | Comportamiento correcto |
---|---|---|---|
LWG 3014 | C++17 | La sobrecarga con error_code de remove_all está marcada con noexcept pero puede asignar memoria. | Se eliminó noexcept. |
[editar]Véase también
borra un archivo Original: erases a file The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función) |