std::filesystem::directory_entry::exists
bool exists() const; bool exists( std::error_code& ec ) const noexcept; |
(desde C++17) | |
Verifica si el objeto al que se apunta existe. Efectivamente devuelve std::filesystem::exists(status()) o std::filesystem::exists(status(ec)), respectivamente.
Contenido |
[editar] Parámetros
ec | - | El parámetro de salida para informe de errores en la sobrecarga que no lanza excepciones. |
[editar] Valor de retorno
true si el objeto del sistema de archivos al que se hace referencia existe, false de lo contrario.
[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] Ejemplo
#include <filesystem> #include <fstream> #include <iostream> #include <string> namespace fs = std::filesystem; int main() { // almacenar ruta actual y restaurarla a la salida const auto old_current_path = fs::current_path(); // crear directorio "sanbox" en directorio temporal const auto dir_sandbox = fs::temp_directory_path() / "sandbox"; if (!fs::create_directory(dir_sandbox)) { std::cout << "ERROR #1" << '\n'; return -1; } fs::current_path(dir_sandbox); // cambiar al directorio justamente creado fs::directory_entry entry_sandbox { dir_sandbox }; if (!entry_sandbox.exists()) { std::cout << "ERROR #2" << '\n'; return -1; } std::cout << "Directorio actual: " << entry_sandbox.path().filename() << '\n'; fs::path path_tmp_file = dir_sandbox / "tmp_file"; std::ofstream file( path_tmp_file.string() ); // crear archivo regular file << "es.cppreference.com"; // escribir 19 bytes file.flush(); fs::directory_entry entry_tmp_file{ path_tmp_file }; if (entry_tmp_file.exists()) { std::cout << "Archivo " << entry_tmp_file.path().filename() << " tiene tamaño: " << entry_tmp_file.file_size() << '\n'; } else { std::cout << "ERROR #3" << '\n'; } // limpieza fs::current_path(old_current_path); fs::remove_all(dir_sandbox); }
Posible salida:
Directorio actual: "sandbox" Archivo "tmp_file" tiene tamaño: 19
[editar] Véase también
(C++17) |
Verifica si una ruta de acceso se refiere a un objeto existente del sistema de archivos. (función) |