1.使用網(wǎng)上最普通的方法
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類較簡(jiǎn)潔的實(shí)現(xiàn)該功能
void CModelDlg::FindBmpFile(CString strFoldername)
{
CString m_cstrFileList="";
CFileFind tempFind;
BOOL bFound; //判斷是否成功找到文件
bFound=tempFind.FindFile(strFoldername + "\\*.*"); /修改" "內(nèi)內(nèi)容給限定查找文件類型
CString strTmp; //如果找到的是文件夾 存放文件夾路徑
while(bFound) //遍歷所有文件
{
bFound=tempFind.FindNextFile(); //第一次執(zhí)行FindNextFile是選擇到第一個(gè)文件,以后執(zhí)行為選擇
//到下一個(gè)文件
if(!tempFind.IsDots()) continue; //如果找到的是返回上層的目錄 則結(jié)束本次查找
if(tempFind.IsDirectory()) //找到的是文件夾,則遍歷該文件夾下的文件
{
strTmp="";
strTmp=tempFind.GetFilePath();
FindFile(strTmp);
}
else
{
strTmp=tempFind.GetFileName(); //保存文件名,包括后綴名
// 在此處添加對(duì)找到文件的處理
}
}
tempFind.Close();
return;
}
聯(lián)系客服