10

遍历文件夹下所有文件和文件夹

 3 years ago
source link: https://blog.csdn.net/china_video_expert/article/details/70163711
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

遍历文件夹下所有文件和文件夹

reprint.png
叶广明_微信ye_guangming 2017-04-13 23:48:20 articleReadEyes.png 374
分类专栏: C语言进阶
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;
}

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK