• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

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

    履歴 編集

    class
    <filesystem>

    std::filesystem::directory_entry

    namespace std::filesystem {
      class directory_entry;
    }
    

    概要

    directory_entryは、directory_iteratorクラスもしくはrecursive_directory_iteratorクラスによってディレクトリ走査をした際に取得できる、ディレクトリ内要素を表すクラスである。

    ディレクトリの走査では、オペレーティングシステムのファイルシステムごとに、異なる追加の属性が取得できる。このクラスは、オペレーティングシステムごとの差異を吸収し、ディレクトリ走査を効率的に行えるようさまざまな属性をキャッシュする。

    メンバ関数

    構築・破棄

    名前 説明 対応バージョン
    (constructor) コンストラクタ C++17
    ~directory_entry(); デストラクタ C++17
    directory_entry& operator=(const directory_entry&) = default;
    directory_entry& operator=(directory_entry&&) noexcept = default;
    代入演算子 C++17

    変更

    名前 説明 対応バージョン
    assign パスを再代入する C++17
    replace_filename ファイル名を置き換える C++17
    refresh キャッシュを更新する C++17

    観測

    名前 説明 対応バージョン
    path パスを取得する C++17
    operator path path型に変換する C++17
    exists パスが存在するか確認する C++17
    file_size ファイルサイズを取得する C++17
    hard_link_count ハードリンク数を取得する C++17
    is_regular_file 通常ファイルを指しているか確認する C++17
    is_directory ディレクトリを指しているか確認する C++17
    is_symlink シンボリックリンクを指しているか確認する C++17
    is_block_file ブロックデバイスのスペシャルファイルを指しているか確認する C++17
    is_character_file キャラクタデバイスのスペシャルファイル指しているか確認する C++17
    is_fifo FIFOまたはパイプを指しているか確認する C++17
    is_socket ソケットを指しているか確認する C++17
    is_other パスが存在していない、もしくはシステム依存の種別のファイルを指しているかを確認する C++17
    last_write_time 最終更新日時を取得する C++17
    status ファイル状態を取得する C++17
    symlink_status シンボリックリンクの状態を取得する C++17

    比較演算子

    名前 説明 対応バージョン
    operator== 等値比較 C++17
    operator!= 非等値比較 C++17
    operator<=> 三方比較 C++20
    operator< 左辺が右辺より小さいかの判定を行う C++17
    operator<= 左辺が右辺以下かの判定を行う C++17
    operator> 左辺が右辺より大きいかの判定を行う C++17
    operator>= 左辺が右辺以上かの判定を行う C++17

    #include <iostream>
    #include <filesystem>
    #include <fstream>
    
    namespace fs = std::filesystem;
    
    int main()
    {
      fs::create_directory("dir");
      fs::create_directory("dir/inner_dir");
      std::ofstream{"dir/a.txt"};
    
      // dirディレクトリ内のファイルを列挙する
      for (const fs::directory_entry& x : fs::directory_iterator("dir")) {
        std::cout << x.path() << std::endl;
      }
    }
    

    出力例

    "dir/inner_dir"
    "dir/a.txt"
    

    バージョン

    言語

    • C++17

    処理系

    参照