您的位置:首页 > 其它

递归搜索文件目录中的所有文件(vc)

2017-12-26 11:29 309 查看
李国帅 于2009-07-08

void FindFileInDir(char* rootDir, char* strRet)
{
char fname[MAC_FILENAMELENOPATH];
ZeroMemory(fname, MAC_FILENAMELENOPATH);
WIN32_FIND_DATA fd;
ZeroMemory(&fd, sizeof(WIN32_FIND_DATA));

HANDLE hSearch;
char filePathName[256];
char tmpPath[256];
ZeroMemory(filePathName, 256);
ZeroMemory(tmpPath, 256);
strcpy(filePathName, rootDir);

BOOL bSearchFinished = FALSE;
if (filePathName[strlen(filePathName) - 1] != '\\')
{
strcat(filePathName, "\\");
}
strcat(filePathName, "*");

hSearch = FindFirstFile(filePathName, &fd);
//Is directory
if ((fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
&& strcmp(fd.cFileName, ".") && strcmp(fd.cFileName, ".."))
{
strcpy(tmpPath, rootDir);
strcat(tmpPath, fd.cFileName);
FindFileInDir(tmpPath, strRet);
}
else   if (strcmp(fd.cFileName, ".") && strcmp(fd.cFileName, ".."))
{
sprintf(fname, "%-50.50s", fd.cFileName);
strcat(strRet + strRet[strlen(strRet)], fname);
}

while (!bSearchFinished)
{
if (FindNextFile(hSearch, &fd))
{
if ((fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
&& strcmp(fd.cFileName, ".") && strcmp(fd.cFileName, ".."))
{
strcpy(tmpPath, rootDir);
strcat(tmpPath, fd.cFileName);
FindFileInDir(tmpPath, strRet);
}
else   if (strcmp(fd.cFileName, ".") && strcmp(fd.cFileName, ".."))
{
sprintf(fname, "%-50.50s", fd.cFileName);
strcat(strRet + strRet[strlen(strRet)], fname);
}
}
else
{
if (GetLastError() == ERROR_NO_MORE_FILES)          //Normal Finished
{
bSearchFinished = TRUE;
}
else
bSearchFinished = TRUE;     //Terminate Search
}
}
FindClose(hSearch);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: