std::experimental::filesystem::space
From cppreference.com
< cpp | experimental | fs
| ヘッダー <experimental/filesystem> で定義されています |
||
| space_info space( const path& p ); space_info space( const path& p, error_code& ec ) noexcept; |
(filesystem TS) | |
パス名pが存在するファイルシステムに関する情報を、POSIXのstatvfs関数を呼び出したかのように決定します。
POSIXのstruct statvfsのメンバーから設定された、space_info型のオブジェクトを生成して返します。設定は以下のようになります。
- space_info.capacity は、f_blocks * f_frsize として設定されます。
- space_info.free は、f_bfree * f_frsize として設定されます。
- space_info.available は、f_bavail * f_frsize として設定されます。
- 決定できなかったメンバーは、static_cast<std::uintmax_t>(-1) に設定されます。
例外を投げないオーバーロードでは、エラー時にすべてのメンバーがstatic_cast<std::uintmax_t>(-1) に設定されます。
目次 |
[編集] パラメータ
| p | - | 検査するパス |
| エラーコード | - | 例外を投げないオーバーロードでのエラー報告のための出力パラメータ |
[編集] 戻り値
ファイルシステムの情報(space_info オブジェクト)。
[編集] 例外
error_code& パラメータを取らないオーバーロードは、下位OS APIエラーが発生した場合、最初の引数としてp、エラーコード引数としてOSのエラーコードを指定して構築されたfilesystem_errorを投げます。メモリ確保に失敗した場合は、std::bad_alloc が投げられる可能性があります。error_code& パラメータを取るオーバーロードは、OS API呼び出しに失敗した場合にそれをOS APIエラーコードに設定し、エラーが発生しなかった場合はec.clear() を実行します。このオーバーロードはnoexcept 指定:
noexcept
[編集] 注記
space_info.available は、space_info.free よりも小さくなる場合があります。
[編集] 例
このコードを実行
#include <experimental/filesystem> #include <iostream> namespace fs = std::experimental::filesystem; int main() { fs::space_info devi = fs::space("/dev/null"); fs::space_info tmpi = fs::space("/tmp"); std::cout << " Capacity Free Available\n" << "/dev: " << devi.capacity << " " << devi.free << " " << devi.available << '\n' << "/tmp: " << tmpi.capacity << ' ' << tmpi.free << ' ' << tmpi.available << '\n'; }
実行結果の例
Capacity Free Available /dev: 4175114240 4175110144 4175110144 /tmp: 420651237376 411962273792 390570749952
[編集] 関連項目
| ファイルシステムの空き容量と利用可能容量に関する情報 (クラス) |