std::filesystem::is_empty
| Definido en el archivo de encabezado <filesystem>
|
||
bool is_empty( const std::filesystem::path& p ); bool is_empty( const std::filesystem::path& p, std::error_code& ec ); |
(desde C++17) | |
Verifica si la ruta de acceso dada se refiere a un archivo o directorio vacíos.
Parámetros
| p | - | La ruta de acceso a examinar. |
| ec | - | El código de error a modificar en caso de error. |
Valor de retorno
true si el archivo indicado por p o si el tipo indicado s se refieren a un archivo o directorio vacíos, false de lo contrario. La sobrecarga que no lanza excepciones devuelve false si ocurre un error.
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.
Ejemplo
#include <filesystem>
#include <fstream>
#include <iostream>
#include <cstdio>
int main()
{
namespace fs = std::filesystem;
const fs::path dir_temp{ fs::temp_directory_path() };
std::cout << std::boolalpha
<< "Directorio temporal: " << dir_temp << '\n'
<< "is_empty(): " << fs::is_empty(dir_temp) << '\n';
const fs::path nombre_temp{ dir_temp / std::tmpnam(nullptr) };
std::cout << "Archivo temporal: " << nombre_temp << '\n';
std::ofstream archivo{ nombre_temp.string() };
std::cout << "is_empty(): " << fs::is_empty(nombre_temp) << '\n';
archivo << "es.cppreference.com";
archivo.flush();
std::cout << "is_empty(): " << fs::is_empty(nombre_temp) << '\n'
<< "file_size(): " << fs::file_size(nombre_temp) << '\n';
archivo.close();
fs::remove(nombre_temp);
}
Posible salida:
Directorio temporal: "/tmp"
is_empty(): false
Archivo temporal: "/tmp/fileCqd9DM"
is_empty(): true
is_empty(): false
file_size(): 19
Informes de defectos
Los siguientes informes de defectos de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.
| ID | Aplicado a | Comportamiento según lo publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 3013 | C++17 | La sobrecarga con error_code está marcada noexcept pero puede asignar memoria.
|
Se eliminó noexcept
|
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) |
Verifica si una ruta de acceso se refiere a un objeto existente del sistema de archivos. (función) |