Поиск по подкатологам

Есть код

bool find()
{
    WIN32_FIND_DATAA fdFindData;
    HANDLE hFind;
    hFind = FindFirstFileA("C:\\Users\\user\\Desktop\\*", &fdFindData);
    while (FindNextFileA(hFind, &fdFindData))
    {
        printf("%s ", fdFindData.cFileName);
    }
    FindClose(hFind);
    return 1;
}

Но он ищет только файлы в Desktop, как я могу пройтись ещё по подкатологам?


Ответы (1 шт):

Автор решения: Harry

У

WIN32_FIND_DATAA fdFindData;

есть такое поле - dwFileAttributes, которое показывает, в частности, а не каталог ли это

if (fdFindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {...

так что, встретив каталог, вы можете рекурсивно пройтись в поисках файлов по нему.

С другой стороны, раз у вас C++, то можно воспользоваться такой штукой, как std::filesystem::recursive_directory_iterator и не мучиться.

→ Ссылка