Namespaces
Variants

std::filesystem:: is_empty

From cppreference.net
Definido en el encabezado <filesystem>
bool is_empty ( const std:: filesystem :: path & p ) ;
(1) (desde C++17)
bool is_empty ( const std:: filesystem :: path & p, std:: error_code & ec ) ;
(2) (desde C++17)

Comprueba si la ruta dada se refiere a un archivo o directorio vacío.

Contenidos

Parámetros

p - ruta a examinar
ec - código de error a modificar en caso de error

Valor de retorno

true si la ruta indicada por p hace referencia a un archivo o directorio vacío, false en caso contrario. La sobrecarga que no lanza excepciones devuelve false si ocurre un error.

Excepciones

Cualquier sobrecarga no marcada como noexcept puede lanzar std::bad_alloc si la asignación de memoria falla.

1) Lanza std::filesystem::filesystem_error en errores de la API del sistema operativo subyacente, construido con p como primer argumento de ruta y el código de error del sistema operativo como argumento de código de error.
2) Establece un parámetro std:: error_code & al código de error de la API del sistema operativo si una llamada a la API del SO falla, y ejecuta ec. clear ( ) si no ocurren errores.

Ejemplo

#include <cstdio>
#include <filesystem>
#include <fstream>
#include <iostream>
int main()
{
    namespace fs = std::filesystem;
    const fs::path tmp_dir{fs::temp_directory_path()};
    std::cout << std::boolalpha
              << "Temp dir: " << tmp_dir << '\n'
              << "is_empty(): " << fs::is_empty(tmp_dir) << '\n';
    const fs::path tmp_name{tmp_dir / std::tmpnam(nullptr)};
    std::cout << "Temp file: " << tmp_name << '\n';
    std::ofstream file{tmp_name.string()};
    std::cout << "is_empty(): " << fs::is_empty(tmp_name) << '\n';
    file << "cppreference.net";
    file.flush();
    std::cout << "is_empty(): " << fs::is_empty(tmp_name) << '\n'
              << "file_size(): " << fs::file_size(tmp_name) << '\n';
    file.close();
    fs::remove(tmp_name);
}

Salida posible:

Temp dir: "/tmp"
is_empty(): false
Temp file: "/tmp/fileCqd9DM"
is_empty(): true
is_empty(): false
file_size(): 16

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 3013 C++17 error_code sobrecarga marcada como noexcept pero puede asignar memoria noexcept eliminado

Véase también

(C++17) (C++17)
determina los atributos del archivo
determina los atributos del archivo, verificando el destino del enlace simbólico
(función)
(C++17)
verifica si la ruta hace referencia a un objeto del sistema de archivos existente
(función)