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

履歴 編集

class
<filesystem>

std::filesystem::space_info(C++17)

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

処理系

参照