最終更新日時: 2024年06月11日 22時45分38秒 (JST)
Akira Takahashi が更新

履歴 編集

enum
<filesystem>

# std::filesystem::directory_options(C++17)

    namespace std::filesystem {
      enum class directory_options {
        none,
        follow_directory_symlink,
        skip_permission_denied
      };
    }

## 概要

ディレクトリの走査オプションを表す、ビットマスクの列挙型。

それぞれの列挙子の値は未規定。

列挙子 | 説明
--- | ---
`none` | ディレクトリのシンボリックリンクを無視し、アクセス許可されないファイルはエラーとなる (デフォルト)
`follow_directory_symlink` | ディレクトリのシンボリックリンクを無視せずに従う
`skip_permission_denied` | アクセス許可されないファイルを無視する

## 例

    #include <iostream>
    #include <filesystem>
    #include <fstream>

    namespace fs = std::filesystem;

    int main()
    {
      fs::create_directory("dir_a");
      std::ofstream{"dir_a/a.txt"};

      fs::create_directory("dir_b");
      std::ofstream{"dir_b/b.txt"};
      fs::create_directory_symlink("../dir_a", "dir_b/dir_a");

      // シンボリックリンクのディレクトリも走査する
      for (const fs::directory_entry& x : fs::recursive_directory_iterator(
                                            "dir_b",
                                            fs::directory_options::follow_directory_symlink)) {
        std::cout << x.path() << std::endl;
      }
    }

### 出力例

    "dir_b/b.txt"
    "dir_b/dir_a"
    "dir_b/dir_a/a.txt"

## バージョン

### 言語

- C++17

### 処理系

- Clang: 7.0 ✅
- GCC: 8.2 ✅
- Visual C++: