# std::filesystem::directory_entry::is_directory

< cpp‎ | filesystem‎ | directory entry

bool is_directory() const; bool is_directory( std::error_code& ec ) const noexcept; |  | (C++17 起)

检查所指对象是否目录。各自等效于返回 std::filesystem::is_directory(status()) 或 std::filesystem::is_directory(status(ec))

### 参数

ec | - | 不抛出重载中报告错误的输出参数

### 返回值

若所指代文件系统对象是目录则为 true ，否则为 false 。

### 异常

不接受 std::error_code& 参数的重载在底层 OS API 错误时抛出 `filesystem_error` ，以第一 path 参数 `p` 和作为错误码参数的 OS 错误码构造。若 OS API 调用失败，则接受 std::error_code& 参数的重载设置该参数为 OS API 错误码，而若不出现错误则执行 ec.clear() 。若内存分配失败，则任何不标记为 `noexcept` 的重载可能抛出 std::bad_alloc 。

### 示例

    #include <iostream>
    #include <filesystem>

    namespace fs = std::filesystem;

    int main()
    {
        fs::directory_entry d1(".");
        fs::directory_entry d2("file.txt");
        fs::directory_entry d3("new_dir");

        std::cout << std::boolalpha
                  << ". d1 " << d1.is_directory() << '\n'
                  << "file.txt d2 " << d2.is_directory() << '\n'
                  // false ，因为未创建它
                  << "new_dir d3 " << d3.is_directory() << '\n';

        fs::create_directory("new_dir");

        std::cout << "new_dir d3 before refresh " << d3.is_directory() << '\n';
        d3.refresh();
        std::cout << "new_dir d3 after refresh " << d3.is_directory() << '\n';
    }

可能的输出：

    . d1 true
    file.txt d2 false
    new_dir d3 false
    new_dir d3 before refresh false
    new_dir d3 after refresh true

### 参阅

is_directory (C++17) | 检查给定的路径是否表示一个目录 (函数)