VC下遍历文件夹的两种方法

想找个能遍历文件夹的办法,找了下,大概有两种,列举如下

第一种方法就是网上常见的一种方法:

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; }

个人感觉第二个好用一点,方便于实现。

版权声明:本文为博主原创文章,,未经博主允许不得转载。

命运掌握在自己手中

VC下遍历文件夹的两种方法

相关文章:

你感兴趣的文章:

标签云: