常需對指定目錄下所有檔案進行搜尋或統一操作。若檔案眾多,逐一手動處理極耗時。CFileFindExt 繼承 CFileFind,採用基於層次遍歷的非遞迴演算法,減少執行期時間與空間開銷,實現目錄下所有檔案的搜尋與批次處理。
#include "stdafx.h"
#include "FileFindExt.h"
// 單參數處理函數
BOOL ProcessFile1(CString SrcFile) { /* 自訂處理 */ }
// 雙參數處理函數
BOOL ProcessFile2(CString SrcFile, CString DstFile) { /* 自訂處理 */ }
// 類別宣告
CFileFindExt ProcessDir;
BOOL ret = ProcessDir.DoProcess(Dir, ProcessFile1, "*.*");
// 功能:對 Dir 下符合副檔名的所有檔案呼叫 ProcessFile1
// 參數 3:副檔名篩選,預設 "*.*" 代表全部
// 回傳:成功 true;ProcessFile1 出錯則中止並回傳 false
BOOL ret = ProcessDir.DoProcess(Dir, ProcessFile2, "P", "*.*");
// 功能:呼叫雙參數處理函數
// 參數 3:目標檔名在原主檔名後附加的字串 (如 "P" → ts.txt 變 tsP.txt)
// 參數 4:副檔名篩選
// 目標檔名格式可修改原始碼自訂
BOOL ret = ProcessDir.SearchFiles(DirName, FileExtName);
// 功能:搜尋指定目錄下符合條件的所有檔案
// 回傳:
// - 相對路徑檔名存於 m_FileNames
// - 總檔案數存於 m_iFiles
// - 成功 true;記憶體不足中止回傳 false