请看已经采纳的建议:
我正在尝试使用WinAPI和C ++列出给定目录中的所有目录(文件夹)。
目前,我的算法速度慢且效率低下: - 使用FindFirstFileEx()打开要搜索的文件夹 - 然后查看目录中的每个文件(使用FindNextFile()),如果它是目录文件,则将其绝对路径存储在向量中,如果只是文件,则不执行任何操作。
这似乎非常低效,因为我正在查看目录中的每个文件。
以下是需要回答的问题: 1. 是否有WinAPI函数可以告诉我给定目录中的所有子目录? 2. 您是否知道我可以使用哪种算法来有效地定位和识别目录(文件夹)?
编辑: 所以在采纳了建议之后,我使用了FindExSearchLimitToDirectories进行搜索,但对我来说它仍然会打印出所有文件(.txt等),而不仅仅是文件夹。我做错了什么吗?
我正在尝试使用WinAPI和C ++列出给定目录中的所有目录(文件夹)。
目前,我的算法速度慢且效率低下: - 使用FindFirstFileEx()打开要搜索的文件夹 - 然后查看目录中的每个文件(使用FindNextFile()),如果它是目录文件,则将其绝对路径存储在向量中,如果只是文件,则不执行任何操作。
这似乎非常低效,因为我正在查看目录中的每个文件。
以下是需要回答的问题: 1. 是否有WinAPI函数可以告诉我给定目录中的所有子目录? 2. 您是否知道我可以使用哪种算法来有效地定位和识别目录(文件夹)?
编辑: 所以在采纳了建议之后,我使用了FindExSearchLimitToDirectories进行搜索,但对我来说它仍然会打印出所有文件(.txt等),而不仅仅是文件夹。我做错了什么吗?
WIN32_FIND_DATA dirData;
HANDLE dir = FindFirstFileEx( "c:/users/soribo/desktop\\*", FindExInfoStandard, &dirData,
FindExSearchLimitToDirectories, NULL, 0 );
while ( FindNextFile( dir, &dirData ) != 0 )
{
printf( "FileName: %s\n", dirData.cFileName );
}
FindExSearchLimitToDirectories
仅提供建议作用,因此不能保证只返回目录;它只是在支持该功能的文件系统上启用了一种优化。 - Gabe