Проверка существования директории

C++:
Проверка существования директории

Как:

Начиная с C++17, у нас есть std::filesystem, который облегчает жизнь при работе с файловой системой. Вот фрагмент кода для проверки наличия директории:

#include <iostream>
#include <filesystem>

int main() {
    std::filesystem::path dir_path{"./some_directory"};

    bool exists = std::filesystem::exists(dir_path);
    if(exists) {
        std::cout << "Директория существует." << std::endl;
    } else {
        std::cout << "Директория не существует." << std::endl;
    }

    return 0;
}

Пример вывода (если директория существует):

Директория существует.

Или (если директории не существует):

Директория не существует.

Погружение

До C++17 нам приходилось полагаться на платформоспецифические вызовы API или сторонние библиотеки. В API Windows мы могли использовать GetFileAttributes и проверять, было ли возвращаемое значение INVALID_FILE_ATTRIBUTES. В системах POSIX мы могли использовать функцию stat() для аналогичной функциональности.

C++17 изменил правила игры с std::filesystem. Он предоставляет кроссплатформенную поддержку и высокоуровневый интерфейс для взаимодействия с файловой системой. Функция exists() - это простой способ проверки существования директории, но вы также можете использовать is_directory(), если хотите не только подтвердить наличие, но и убедиться, что путь указывает на директорию, а не на файл.

Для альтернативных методов рассмотрите функции std::filesystem::status_known() и std::filesystem::file_status, чтобы обработать случаи, когда разрешения файлов или другие проблемы могут повлиять на вашу способность определить существование директории.

Смотрите также

Узнайте больше о операциях с файловой системой в C++: