想找个能遍历文件夹的办法,找了下,大概有两种,列举如下
第一种方法就是网上常见的一种方法:
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);}
实际上还可以利用CFileFind类可以较简洁的实现该功能:
void FindBmpFile(CString strFoldername){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; }
个人感觉第二个好用一点,方便于实现。
版权声明:本文为博主原创文章,,未经博主允许不得转载。
命运掌握在自己手中