名前空間
変種
操作

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]

[編集] 関連項目

通常ファイルのサイズを切り詰めまたはゼロ埋めで変更する
(関数) [編集]
ファイルシステム上の利用可能な空き容量を決定する
(関数) [編集]
English 日本語 中文(简体) 中文(繁體)