std::experimental::filesystem::file_size
From cppreference.com
< cpp | experimental | fs
| ヘッダー <experimental/filesystem> で定義されています |
||
| std::uintmax_t file_size( const path& p ); std::uintmax_t file_size( const path& p, error_code& ec ); |
(1) | (filesystem TS) |
指定されたパスpにある通常のファイルのサイズを返します。これは、POSIXのstatによって得られた構造体のst_sizeメンバーを読み取るのと同じ方法で決定されます(シンボリックリンクはたどられます)。
ディレクトリ(通常のファイルまたはシンボリックリンク以外のファイル)のサイズを決定しようとすると、エラーとして扱われます。
例外を投げないオーバーロードは、エラー発生時に-1を返します。
目次 |
[編集] パラメータ
| p | - | 検査するパス |
| エラーコード | - | 例外を投げないオーバーロードでのエラー報告のための出力パラメータ |
[編集] 戻り値
ファイルのサイズ(バイト単位)。
[編集] 例外
error_code&パラメータを取らないオーバーロードは、基盤となるOS APIエラーが発生した場合にfilesystem_errorをスローします。これは、最初の引数としてp、エラーコード引数としてOSのエラーコードを使用して構築されます。std::bad_allocは、メモリ割り当てに失敗した場合にスローされる可能性があります。error_code&パラメータを取るオーバーロードは、OS API呼び出しが失敗した場合にそれをOS APIエラーコードに設定し、エラーが発生しなかった場合はec.clear()を実行します。このオーバーロードはnoexcept 指定:
noexcept
[編集] 例
このコードを実行
#include <experimental/filesystem> #include <fstream> #include <iostream> namespace fs = std::experimental::filesystem; int main() { fs::path p = fs::current_path() / "example.bin"; std::ofstream(p).put('a'); // create file of size 1 std::cout << "File size = " << fs::file_size(p) << '\n'; fs::remove(p); try { fs::file_size("/dev"); // attempt to get size of a directory } catch (fs::filesystem_error& e) { std::cout << e.what() << '\n'; } }
実行結果の例
File size = 1 filesystem error: cannot get file size: Is a directory [/dev]
[編集] 関連項目
| 通常ファイルのサイズを切り詰めまたはゼロ埋めで変更する (関数) | |
| ファイルシステム上の利用可能な空き容量を決定する (関数) |