1 void find(char * lpPath)
{
char szFind[MAX_PATH];
WIN32_FIND_DATA FindFileData;
strcpy(szFind,lpPath);
strcat(szFind,"*.*");
HANDLEhFind=::FindFirstFile(szFind,&FindFileData);
if(INVALID_HANDLE_VALUE == hFind) return;
while(TRUE)
{
if(FindFileData.dwFileAttributes &FILE_ATTRIBUTE_DIRECTORY)
{
if(FindFileData.cFileName[0]!='.')
{
strcpy(szFile,lpPath);
strcat(szFile,"");
strcat(szFile,FindFileData.cFileName);
find(szFile);
}
}
else
{
cout <<FindFileData.cFileName;
}
if(!FindNextFile(hFind,&FindFileData)) break;
}
FindClose(hFind);
}
2.利用CFileFind類較簡潔的實現該功能
void CModelDlg::FindBmpFile(CString strFoldername)
{
? ? ? CStringm_cstrFileList="";
? ? ? CFileFindtempFind;
? ? ? BOOL bFound;//判斷是否成功找到文件
? ? ? bFound=tempFind.FindFile(strFoldername? ? +? ? "\\*.*");? ? /修改""內內容給限定查找文件類型
? ? ? CStringstrTmp;? ? //如果找到的是文件夾存放文件夾路徑
? ? ? while(bFound)? ? ? ? ? //遍歷所有文件
? ? ? {
? ? ? ? ? ? ? bFound=tempFind.FindNextFile();//第一次執行FindNextFile是選擇到第一個文件,以后執行為選擇
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //到下一個文件
? ? ? ? ? ? ? ? ? ? if(!tempFind.IsDots()) continue; //如果找到的是返回上層的目錄 則結束本次查找
? ? ? ? ? ? ? ? ? ? ? if(tempFind.IsDirectory())? ? //找到的是文件夾,則遍歷該文件夾下的文件
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? strTmp="";
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? strTmp=tempFind.GetFilePath();
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? FindFile(strTmp);
? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? strTmp=tempFind.GetFileName(); //保存文件名,包括后綴名
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // 在此處添加對找到文件的處理
? ? ? ? ? ? ? ? ? ? ? }
? ? ? }
? ? ? tempFind.Close();
? ? ? return;
}
{
char szFind[MAX_PATH];
WIN32_FIND_DATA FindFileData;
strcpy(szFind,lpPath);
strcat(szFind,"*.*");
HANDLEhFind=::FindFirstFile(szFind,&FindFileData);
if(INVALID_HANDLE_VALUE == hFind) return;
while(TRUE)
{
if(FindFileData.dwFileAttributes &FILE_ATTRIBUTE_DIRECTORY)
{
if(FindFileData.cFileName[0]!='.')
{
strcpy(szFile,lpPath);
strcat(szFile,"");
strcat(szFile,FindFileData.cFileName);
find(szFile);
}
}
else
{
cout <<FindFileData.cFileName;
}
if(!FindNextFile(hFind,&FindFileData)) break;
}
FindClose(hFind);
}
2.利用CFileFind類較簡潔的實現該功能
void CModelDlg::FindBmpFile(CString strFoldername)
{
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
}