std::filesystem::space_info
std::filesystem::space_info (파일시스템 용량 정보)
파일시스템의 용량·여유 공간·비특권 프로세스가 쓸 수 있는 공간 정보를 담는 구조체예요. filesystem::space가 결정한 정보를 나타내요. C++17부터 있어요.
출처: cppreference
본문
<filesystem> 헤더에 정의돼 있어요.
struct space_info {
std::uintmax_t capacity;
std::uintmax_t free;
std::uintmax_t available;
};
멤버 객체
capacity— 파일시스템의 전체 크기(바이트)free— 파일시스템의 여유 공간(바이트)available— 비특권 프로세스가 사용 가능한 여유 공간(free와 같거나 더 작을 수 있음)
비멤버 함수: operator==
friend bool operator==( const space_info&, const space_info& ) = default; // C++20
두 인자의 capacity, free, available이 각각 같은지 검사해요. 이 함수는 일반적인 한정·비한정 조회로는 보이지 않고, std::filesystem::space_info가 인자의 연관 클래스일 때 argument-dependent lookup으로만 찾을 수 있어요. != 연산자는 ==로부터 합성돼요.
예제
#include <cstdint>
#include <filesystem>
#include <iostream>
#include <locale>
std::uintmax_t disk_usage_percent(const std::filesystem::space_info& si, bool use_available)
{
return si.capacity ? (use_available ? si.available * 100 / si.capacity
: si.free * 100 / si.capacity) : 0;
}