• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

    最終更新日時(UTC):
    が更新

    履歴 編集

    class
    <filesystem>

    std::filesystem::space_info

    namespace std::filesystem {
      struct space_info;
    }
    

    概要

    std::filesystem::space_infoは、ディスク容量を表すクラスである。

    availableの値はOS依存であるが、値としてはfree以下となるだろう。POSIX環境では、非特権プロセスが使用できる容量を表す。

    メンバ関数

    比較演算子

    名前 説明 対応バージョン
    friend bool operator==(const space_info&, const space_info&) = default; 等値比較 C++20
    friend bool operator!=(const space_info&, const space_info&); 非等値比較 (==により使用可能) C++20

    メンバ変数

    名前 説明 対応バージョン
    uintmax_t capacity 全体の容量 (単位はバイト) C++17
    uintmax_t free; 空き容量 (単位はバイト) C++17
    uintmax_t available; 使用できる容量 (単位はバイト) C++17

    Linux環境の例

    #include <iostream>
    #include <filesystem>
    
    namespace fs = std::filesystem;
    
    void print_space(const char* name, std::uintmax_t bytes)
    {
      std::uintmax_t mega_bytes = bytes / (1024 * 1024);
      std::cout << name << " : " << bytes << "[B]"
                << " (" << mega_bytes << "[MB])" << std::endl;
    }
    
    int main()
    {
      fs::path p = "/";
      fs::space_info info = fs::space(p);
    
      std::cout << p << std::endl;
      print_space("capacity", info.capacity);
      print_space("free", info.free);
      print_space("available", info.available);
    }
    

    出力例

    "/"
    capacity : 1048580096[B] (1000[MB])
    free : 1048580096[B] (1000[MB])
    available : 1048580096[B] (1000[MB])
    

    仮想環境で実行しているため、空き容量が減っていない。実環境で動かせるようになったら出力例を更新する。

    バージョン

    言語

    • C++17

    処理系

    参照