Skip to content

Latest commit

 

History

History
73 lines (57 loc) · 2.66 KB

file_size.md

File metadata and controls

73 lines (57 loc) · 2.66 KB

file_size

  • filesystem[meta header]
  • std::filesystem[meta namespace]
  • function[meta id-type]
  • cpp17[meta cpp]
namespace std::filesystem {
  std::uintmax_t file_size(const path& p);                               // (1)
  std::uintmax_t file_size(const path& p, std::error_code& ec) noexcept; // (2)
}
  • path[link path.md]
  • std::uintmax_t[link /reference/cstdint/uintmax_t.md]

概要

ファイルサイズを取得する。

戻り値

  • ファイルが存在しない、もしくはファイルシステムでエラーが発生した場合、 (1) ではstd::filesystem::filesystem_error例外を送出し、 (2) ではecにエラー情報が設定されてstatic_cast<uintmax_t>(-1)が返る
  • pが通常ファイル、もしくは通常ファイルを指すシンボリックリンクである場合、ファイルサイズが返る
    • POSIX環境ではstat()関数のst_sizeメンバ変数を使用する
  • pがそれ以外のファイル種別である場合は、実装定義の動作をする

例外

  • (1) : ファイルシステムがエラーを報告する場合がある。それに加えて、指定されたファイルが存在しない場合もエラーである。エラーが発生した場合は、std::filesystem::filesystem_error例外を送出する
  • (2) : 投げない

備考

#include <cassert>
#include <fstream>
#include <filesystem>

namespace fs = std::filesystem;

int main()
{
  {
    std::ofstream file{"regular.txt", std::ios::binary};
    std::uint32_t value = 42;
    file.write(reinterpret_cast<char*>(&value), sizeof(value));
  }

  std::uintmax_t size = fs::file_size("regular.txt");
  assert(size == 4);
}
  • fs::file_size[color ff0000]
  • std::uint32_t[link /reference/cstdint/uint32_t.md]
  • std::uintmax_t[link /reference/cstdint/uintmax_t.md]

出力

バージョン

言語

  • C++17

処理系