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, std::error_code& ec) noexcept; |
(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.capacityse establece como si fuera porf_blocks*f_frsize;space_info.freese establece enf_bfree*f_frsize;space_info.availablese establece enf_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.
Parámetros
| p | - | La ruta de acceso a examinar. |
| ec | - | El parámetro de salida para reportar errores en la sobrecarga que no lanza. |
Valor de retorno
La información del sistema de archivos (un objeto filesystem::space_info).
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.
Notas
space_info.available puede ser menor que space_info.free.
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
Véase también
(C++17) |
Información sobre el espacio libre y disponible en el sistema de archivos. (clase) |