Namespaces
Variants

std::experimental::filesystem:: exists

From cppreference.net
Definido en el encabezado <experimental/filesystem>
bool exists ( file_status s )
(1) (filesystem TS)
bool exists ( const path & p ) ;
bool exists ( const path & p, error_code & ec )
(2) (filesystem TS)

Comprueba si el estado del archivo o la ruta proporcionada corresponde a un archivo o directorio existente.

1) Equivalente a status_known ( s ) && s. type ( ) ! = file_type :: not_found .
2) Equivalente a exists ( status ( p ) ) o exists ( status ( p, ec ) ) (los enlaces simbólicos se siguen). La sobrecarga que no lanza excepciones retorna false si ocurre un error.

Contenidos

Parámetros

s - estado del archivo a verificar
p - ruta a examinar
ec - parámetro de salida para reporte de errores en la sobrecarga no lanzadora

Valor de retorno

true si la ruta o el estado del archivo dados corresponden a un archivo o directorio existente, false en caso contrario.

Excepciones

1)
noexcept especificación:
noexcept
2) La sobrecarga que no toma un parámetro error_code & lanza filesystem_error en errores de API del sistema operativo subyacente, construido con p como primer argumento y el código de error del sistema operativo como argumento de código de error. std:: bad_alloc puede ser lanzado si falla la asignación de memoria. La sobrecarga que toma un parámetro error_code & lo establece al código de error de la API del sistema operativo si una llamada a la API falla, y ejecuta ec. clear ( ) si no ocurren errores. Esta sobrecarga tiene
noexcept especificación:
noexcept

Notas

La información proporcionada por esta función generalmente también se ofrece como un subproducto de la iteración de directorios. Durante la iteración de directorios, llamar exists(*iterator) es menos eficiente que exists(iterator->status()) .

Ejemplo

#include <cstdint>
#include <experimental/filesystem>
#include <fstream>
#include <iostream>
namespace fs = std::experimental::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 << " exists\n";
    else
        std::cout << " does not exist\n";
}
int main()
{
    fs::create_directory("sandbox");
    std::ofstream("sandbox/file"); // create regular file
    fs::create_symlink("non-existing", "sandbox/symlink");
    demo_exists("sandbox");
    for (auto it = fs::directory_iterator("sandbox"); it != fs::directory_iterator(); ++it)
        demo_exists(*it, it->status()); // use cached status from directory entry
    fs::remove_all("sandbox");
}

Salida:

"sandbox" exists
"sandbox/file" exists
"sandbox/symlink" does not exist

Véase también

determina los atributos del archivo
determina los atributos del archivo, verificando el destino del enlace simbólico
(función)
representa el tipo de archivo y permisos
(clase)
estado en caché del archivo designado por esta entrada de directorio
symlink_status en caché del archivo designado por esta entrada de directorio
(función miembro pública de std::experimental::filesystem::directory_entry )