程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> 關於VC++ >> 一個CFileFind的擴展類CFileFindExt

一個CFileFind的擴展類CFileFindExt

編輯:關於VC++

一、類CfileFindExt功能說明

大家經常需要對指定目錄下的所有文件進行搜索或其它相同操作。若文件數很多,逐一對每個文件手工操作,很費時。本文提供一個搜索或處理指定目錄下的所有文件的C++類。作者用基於層次遍歷的非遞歸算法(以減少運行時的時間和空間開銷)實現了一個 CFileFind 的擴展類 CFileFindExt,該類可以對指定目錄下的所有文件進行搜索或相同的處理操作。

二、類 CFileFindExt 的接口說明及用法示例:

1、頭文件、處理函數、以及類的聲明:

#include "stdafx.h.h"
#include "FileFindExt.h"
//①一個參數型處理函數:
BOOL ProcessFile1(CString SrcFile) //文件名可自定義
{
  //自定義函數體
}
//②兩個參數型處理函數:
BOOL ProcessFile2(CString SrcFile, CString DstFile) //文件名可自定義
{
  //自定義函數體
}
//③類的聲明
CFileFindExt ProcessDir;

2、調用說明及示例:

① 對所有文件進行一個參數型函數處理

調用示例:BOOL ret=ProcessDir.DoProcess(Dir, ProcessFile1,"*.*");
功能說明:對指定目錄Dir下、指定文件擴展名的所有文件,調用一個參數型處理函數ProcessFile1進行批處理,
參數說明:第三個參數為指定文件擴展名,缺省時為"*.*",表示搜索所有文件
返回值:成功則返回true;中途ProcessFile1出錯,則終止搜索,返回false。

② 對所有文件進行兩個參數型函數處理

調用示例:BOOL ret=ProcessDir.DoProcess(Dir, ProcessFile2, "P","*.*");
功能說明:對指定目錄Dir下、指定文件擴展名的所有文件,調用兩個參數型處理函數ProcessFile2進行批處理,
參數說明:第四個參數為指定文件擴展名,缺省時為"*.*",表示搜索所有文件
     第三個參數表示所有目標文件主名在原文件主名後增加的字符串,目標文件名格式也可通過修改源程序自己定義。
     例如當它為"P"時,原文件名為ts.txt、st.txt時,則目標文件名分別為tsP.txt、stP.txt:
返回值:成功則返回true;中途ProcessFile2出錯返回false,則終止搜索,返回false。

③ 搜索所有文件名

調用示例:
BOOL ret=ProcessDir.SearchFiles(DirName, FileExtName);
功能說明:搜索DirName目錄下,指定擴展名的所有文件
參數說明:FileExtName-指定擴展名,缺省為所有類型文件
返回值:
1、將所有文件的相對路徑文件名(相對於起始搜索路徑)保存在成員變量m_FileNames中;
2、將總文件個數,保存在成員變量m_iFiles中
3、成功則返回true;中途內存分配不夠,則終止搜索,返回false。

三、歡迎大家使用。

今後大家根據需要還可增加返回所有子目錄名函數,以及增加其它多參數(大於2)處理函數功能。

本文配套源碼

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