std::filesystem::directory_entry:: assign
From cppreference.net
<
cpp
|
filesystem
|
directory entry
|
void
assign
(
const
std::
filesystem
::
path
&
p
)
;
|
(1) | (desde C++17) |
|
void
assign
(
const
std::
filesystem
::
path
&
p,
std::
error_code
&
ec
)
;
|
(2) | (desde C++17) |
Asigna nuevo contenido al objeto de entrada de directorio. Establece la ruta a
p
y llama a
refresh
para actualizar los atributos en caché. Si ocurre un error, los valores de los atributos en caché no están especificados.
Esta función no confirma ningún cambio en el sistema de archivos.
Contenidos |
Parámetros
| p | - | ruta al objeto del sistema de archivos al que hará referencia la entrada del directorio |
| ec | - | parámetro de salida para reporte de errores en la sobrecarga que no lanza excepciones |
Valor de retorno
(ninguno)
Excepciones
Cualquier sobrecarga no marcada como
noexcept
puede lanzar
std::bad_alloc
si la asignación de memoria falla.
1)
Lanza
std::filesystem::filesystem_error
en errores de la API del sistema operativo subyacente, construido con
p
como primer argumento de ruta y el código de error del sistema operativo como argumento de código de error.
2)
Establece un parámetro
std::
error_code
&
al 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.
Ejemplo
Ejecutar este código
#include <filesystem> #include <fstream> #include <iostream> void print_entry_info(const std::filesystem::directory_entry& entry) { if (std::cout << "La entrada " << entry; not entry.exists()) { std::cout << " no existe en el sistema de archivos\n"; return; } std::cout << " es "; if (entry.is_directory()) std::cout << "un directorio\n"; if (entry.is_regular_file()) std::cout << "un archivo regular\n"; /*...*/ } int main() { std::filesystem::current_path(std::filesystem::temp_directory_path()); std::filesystem::directory_entry entry{std::filesystem::current_path()}; print_entry_info(entry); std::filesystem::path name{"cppreference.html"}; std::ofstream{name} << "C++"; std::cout << "entry.assign();\n"; entry.assign(entry/name); print_entry_info(entry); std::cout << "remove(entry);\n"; std::filesystem::remove(entry); print_entry_info(entry); // la entrada aún contiene el "estado" anterior std::cout << "entry.assign();\n"; entry.assign(entry); // o simplemente llamar a entry.refresh() print_entry_info(entry); }
Salida posible:
La entrada "/tmp" es un directorio entry.assign(); La entrada "/tmp/cppreference.html" es un archivo regular remove(entry); La entrada "/tmp/cppreference.html" es un archivo regular entry.assign(); La entrada "/tmp/cppreference.html" no existe en el sistema de archivos
Véase también
|
asigna contenidos
(función miembro pública) |