我想遍历目录的所有子目录以找到所有 .snt 文件。但是 FindFirstFile 和 FindNextFile 只搜索给定的目录,而不是它的子目录。
具体来说,我正在搜索路径 F:\Program Files (x86)\Amnesia\sounds\
中 sounds 文件夹的所有子文件夹
我尝试将 F:\\Program Files (x86)\\Amnesia\\sounds\\*\\*.snt
传递给 FindFirstFile 但它返回垃圾。执行此操作的正确方法是什么?
#include <windows.h>
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
void main()
{
char path[100]="F:\\Program Files (x86)\\Amnesia\\sounds\\*\\*.snt";
WIN32_FIND_DATA FindFileData;
HANDLE hFind;
hFind = FindFirstFile(path, &FindFileData);
printf("The first file found is %s\n",FindFileData.cFileName);
getch();
}
最佳答案
好吧,“手动”递归。
下面是递归的思路。缺少的是基于扩展名的文件检测。
void file_search_rec(const char *folder)
{
char path[MAX_PATH] ;
WIN32_FIND_DATA FindFileData;
HANDLE hFind;
strcpy(path, folder) ;
strcat(path, "\\*") ;
FindFirstFile(path, &FindFileData) ;
if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
char subpath[MAX_PATH] ;
strcpy(subpath, folder) ;
strcat(subpath, FindFileData.cFileName) ;
// here make the recursive call on subpath
file_search_rec(subpath) ;
}
}
关于c++ - 你如何让 FindFirstFile 打开你给它的路径的子目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31117830/