std::filesystem::exists
De cppreference.com
< cpp | filesystem
Definido en el archivo de encabezado <filesystem>
|
||
bool exists( std::filesystem::file_status s ) noexcept; |
(1) | (desde C++17) |
bool exists( const std::filesystem::path& p ); bool exists( const std::filesystem::path& p, std::error_code& ec ) noexcept; |
(2) | (desde C++17) |
Verifica si el estado de archivo o ruta de acceso dados corresponden a un archivo o directorio existentes.
1) Equivalente a status_known(s) && s.type() != file_type::not_found.
2) Sea
s
un estado de archivo std::filesystem::file_status determinado como si fuera por status(p) o status(p, ec) (se siguen los enlaces simbólicos), respectivamente. Devuelve exists(s). La sobrecarga que no lanza excepcionesllama a ec.clear() si status_known(s).Contenido |
[editar] Parámetros
s | - | El estado de archivo a examinar |
p | - | La ruta de acceso a examinar. |
ec | - | El parámetro de salida para reportar errores en la sobrecarga que no lanza. |
[editar] Valor de retorno
true si la ruta de acceso o el estado de archivo dados corresponden a un archivo o directorio existentes, false de lo contrario.
[editar] Excepciones
2) 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
La información proporcionada por esta función generalmente también se proporciona como un subproducto de la iteración del directorio. Durante la iteración del directorio, llamar a exists(*iterator)
es menos eficiente que exists(iterator->status())
.
[editar] Ejemplo
Esta sección está incompleta Razón: cambiar a directory_entry::exists |
Ejecuta este código
#include <iostream> #include <fstream> #include <cstdint> #include <filesystem> namespace fs = std::filesystem; void demo_exists(const fs::path& p, fs::file_status s = fs::file_status{}) { std::cout << p; if(fs::status_known(s) ? fs::exists(s) : fs::exists(p)) std::cout << " existe\n"; else std::cout << " no existe\n"; } int main() { fs::create_directory("entorno_aislado"); std::ofstream("entorno_aislado/archivo"); // crear archivo regular fs::create_symlink("non-existing", "entorno_aislado/symlink"); demo_exists("entorno_aislado"); for(auto it = fs::directory_iterator("entorno_aislado"); it != fs::directory_iterator(); ++it) demo_exists(*it, it->status()); // usar el estado de la caché de la entrada de directorio fs::remove_all("entorno_aislado"); }
Salida:
"entorno_aislado" existe "entorno_aislado/archivo" existe "entorno_aislado/symlink" no existe
[editar] Véase también
(C++17)(C++17) |
Determina los atributos de archivo. Determina los atributos de archivo, verificando el objetivo del enlace simbólico. (función) |
(C++17) |
Representa el tipo y permisos de archivo. (clase) |
Verifica si la entrada de directorio se refiere a un objeto existente en el sistema de archivos. (función miembro pública de std::filesystem::directory_entry )
|