std::filesystem::space
Definido en el archivo de encabezado <filesystem>
|
||
std::filesystem::space_info space(const std::filesystem::path& p); std::filesystem::space_info space(const std::filesystem::path& p, |
(desde C++17) | |
Determina la información sobre el sistema de archivos en el que se encuentra el nombre de ruta de acceso p
, como si fuera por la función POSIX statvfs
.
Completa y devuelve un objeto tipo filesystem::space_info
, establecido de los miembros de la estructura POSIX struct statvfs
de la siguiente manera:
-
space_info.capacity
se establece como si fuera por f_blocks*f_frsize; -
space_info.free
se establece en f_bfree*f_frsize; -
space_info.available
se establece en f_bavail*f_frsize; - Cualquier miembro que no pudo determinarse se establece en static_cast<std::uintmax_t>(-1).
La sobrecarga que no lanza excepciones establece todos los miembros en static_cast<std::uintmax_t>(-1) si ocurre un error.
Contenido |
[editar] Parámetros
p | - | La ruta de acceso a examinar. |
ec | - | El parámetro de salida para reportar errores en la sobrecarga que no lanza. |
[editar] Valor de retorno
La información del sistema de archivos (un objeto filesystem::space_info
).
[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] Notas
space_info.available
puede ser menor que space_info.free
.
[editar] Ejemplo
#include <iostream> #include <filesystem> #include <cstdint> void imprimir_info_espacio(auto const& dirs, int width = 14) { std::cout << std::left; for (const auto s : {"Capacidad", "Libre", "Disponible", "Dir"}) std::cout << "│ " << std::setw(width) << s << ' '; std::cout << '\n'; std::error_code ec; for (auto const& dir : dirs) { const std::filesystem::space_info si = std::filesystem::space(dir, ec); std::cout << "│ " << std::setw(width) << static_cast<std::intmax_t>(si.capacity) << ' ' << "│ " << std::setw(width) << static_cast<std::intmax_t>(si.free) << ' ' << "│ " << std::setw(width) << static_cast<std::intmax_t>(si.available) << ' ' << "│ " << dir << '\n'; } } int main() { const auto dirs = { "/dev/null", "/tmp", "/home", "/null" }; imprimir_info_espacio(dirs); }
Posible salida:
│ Capacidad │ Libre │ Disponible │ Dir │ 8342851584 │ 8342851584 │ 8342851584 │ /dev/null │ 12884901888 │ 3045265408 │ 3045265408 │ /tmp │ 250321567744 │ 37623181312 │ 25152159744 │ /home │ -1 │ -1 │ -1 │ /null
[editar] Véase también
(C++17) |
Información sobre el espacio libre y disponible en el sistema de archivos. (clase) |