std::filesystem::exists - cppreference.com
De cppreference.com
| Definido en el archivo de encabezado |
||
|
|
(1) | (desde C++17) |
|
|
(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).
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. |
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.
Excepciones
2) La sobrecarga que no toma un parámetro std::error_code& lanza
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.
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()).
Ejemplo
#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
Véase también
| Determina los atributos de archivo. Determina los atributos de archivo, verificando el objetivo del enlace simbólico. (función) [editar] | |
| Representa el tipo y permisos de archivo. (clase) [editar] | |
| 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) [editar]
|