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;
}

더 알아보기 (Learn more)

cppreference