程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> MFC遞歸搜索文件函數代碼

MFC遞歸搜索文件函數代碼

編輯:C++入門知識

自己寫了一個MFC下的搜索文件的函數,遞歸遍歷各級子目錄搜索,對大小寫不敏感。遞歸是個好東西啊,用遞歸寫出來的東西往往代碼簡短,但不容易理解,並且容易出錯,要多加注意。此函數畢竟只是個代碼不足30行的小東西。目前存在缺點:不支持通配符*?等。後續將改進。   調用示例: CStringArray aStrFile;  int i = CFindFile(_T("D:\\"),_T("qq.txt"),&aStrFile);   函數代碼: [cpp]   //第一個參數為要搜索的路徑,比如"c:\\dir\\"或"c:\\dir"則在包括此目錄的所有子目錄下搜索   //第二個參數為要搜索的文件,比如"qq.txt",需要提供文件後綴,大小寫不敏感   //第三個參數用於保存搜索到的文件的全路徑,請構造一個CStringArray對象並傳入地址   INT CFindFile(const TCHAR *szPath,const TCHAR *szFileName,CStringArray *paStrResult)   {       ASSERT(paStrResult!=NULL);       CString StrPath(szPath);       CString StrFileName(szFileName);       //檢查路徑字符串的最後一個字符是不是'\',不是則加上       if (StrPath[StrPath.GetLength()-1]!=_T('\\'))           StrPath += _T('\\');       CString StrFindPath = StrPath + _T("*.*");       //開始查找       CFileFind finder;       BOOL bWorking = finder.FindFile(StrFindPath);       while(bWorking)       {           bWorking = finder.FindNextFile();           //如果找到的是文件夾,遞歸進去           if (finder.IsDirectory()&&!finder.IsDots())           {               CFindFile(StrPath+finder.GetFileName(),StrFileName,paStrResult);           }           //如果找到了文件,將絕對路徑添加進字符串數組,大小寫不敏感           if (finder.GetFileName().CompareNoCase(StrFileName)==0)           {               paStrResult->Add(finder.GetFilePath());           }       }       //返回找到的文件個數       INT nFile = paStrResult->GetSize();       return nFile;   }        

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved