MFC遍历目录

来源:互联网 发布:程序员在哪里接私活 编辑:程序博客网 时间:2024/05/17 04:48

很久之前就用到了,今天再次用到遍历目录,记录如下:

若用*.jpg或者类似的,不能找到子文件夹,因为目录不在*.jpg的范围内。

isdot是用来判断是否./或者../,每个文件夹都有这样两个隐藏的目录,代表当前目录与上级目录,若不排除这两种情况将导致死循环。

 

void CTestDlg::ergodicDir(CString strDir)
{
 CFileFind tempFind; 
 TCHAR sTempFileFind[200];
 _stprintf(sTempFileFind,_T("%s%s"),strDir,_T("*.*")); 
 BOOL IsFinded = tempFind.FindFile(sTempFileFind);

 while (IsFinded)
 { 
  IsFinded = tempFind.FindNextFile(); 

  if (!tempFind.IsDots()) 
  { 
   TCHAR sFoundFileName[200]; 
   lstrcpy(sFoundFileName,tempFind.GetFileName().GetBuffer(200)); 
   if (tempFind.IsDirectory()) 
   { 
    TCHAR sTempDir[200]; 
    _stprintf(sTempDir,_T("%s%s//"),strDir,sFoundFileName);
    MessageBox(sFoundFileName, _T("发现目录"), MB_OK);
    ergodicDir(sTempDir);
   }
   else
   {
    MessageBox(sFoundFileName, _T("发现文件"), MB_OK);
   }
  } 
 }
 tempFind.Close();
}

原创粉丝点击