Я пытаюсь выяснить, как решить эту вещь .. По какой-то причине, это заканчивается в определенный момент .. Я не очень хорош в рекурсии, и я уверен, что проблема лежит где-то там ..
Кроме того, даже если я проверил cFileName! = "..", он все равно появляется в конце, не знаю почему, но "." больше не появляется ..
void find_files( wstring wrkdir )
{
wstring temp;
temp = wrkdir + L"\\" + L"*";
fHandle = FindFirstFile( temp.c_str(), &file_data );
if( fHandle == INVALID_HANDLE_VALUE )
{
return;
}
else
{
while( FindNextFile( fHandle, &file_data ) )
{
if( file_data.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY &&
wcscmp(file_data.cFileName, L".") != 0 &&
wcscmp(file_data.cFileName, L"..") != 0 )
{
find_files( wrkdir + L"\\" + file_data.cFileName );
}
else if( file_data.dwFileAttributes != FILE_ATTRIBUTE_HIDDEN &&
file_data.dwFileAttributes != FILE_ATTRIBUTE_SYSTEM )
{
results << wrkdir << "\\" << file_data.cFileName << endl;
}
}
}
}
После их изменения программа не перечисляет оставшиеся файлы, оставшиеся ..
Например, если есть подпапка с именем test, она перечисляет все внутри test, но не заканчивает перечислять файлы в указанном исходном каталоге.