Espacios de nombres
Variantes
Acciones

std::filesystem::directory_entry::exists

De cppreference.com
 
 
 
 
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) [editar]