1.使用網上最普通的方法
find(char * lpPath)
{
char szFind[MAX_PATH];
WIN32_FIND_DATA FindFileData;
strcpy(szFind,lpPath);
strcat(szFind,"*.*");
HANDLE hFind=::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)<?XML:NAMESPACE PREFIX = O />
{
CString m_cstrFileList="";
CFileFind tempFind;
BOOL bFound; //判斷是否成功找到檔案
bFound=tempFind.FindFile(strFoldername + "\\*.*"); /修改" "內內容給限定尋找檔案類型
CString strTmp; //如果找到的是檔案夾 存放檔案夾路徑
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;
}