我正在尝试弄清楚如何解决这个问题...出现某些原因,它在某个特定点结束...我不太擅长递归,但我确定问题出在那里的某个地方...
此外,即使我检查了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中的所有内容,但不会完成枚举指定原始目录内部的文件。