CFileFind類的使用總結

2021-06-16 04:40:33 字數 4627 閱讀 6296

1、cfilefind類的宣告檔案儲存在afx.h標頭檔案中。

2、該類的實現的功能:執行本地檔案的查詢(查詢某個具體的檔案,查詢某類檔案x*.x*,查詢所有檔案*.*)

3、cfilefind類是cgopherfilefind和cftpfilefind類的基類。

4、cfilefind類的建構函式::cfilefind()和關閉函式::close()我會成對使用。

5、cfilefind類的成員函式我根據其操作特性劃分為3類:查詢操作類、獲得檔案屬性類、判斷檔案屬性類。(下面我先進行函式羅列並沒有完整的描述函式的引數)

查詢操作類

::findfile();

::findnextfile();

獲得檔案屬性類

::getcreationtime();

::getlastaccesstime();

::getlastwritetime();

::getfilename();

::getroot();

::getfilepath();

::getfiletitle();

::getfileurl();

::getlength();

判斷檔案屬性類

::isarchived();

::iscompressed();

::isdirectory();

::isdots();

::ishidden();

::isnormal();

::isreadonly();

::issystem();

::istemporary();

::matchesmask();

6、cfilefind類中成員函式使用應注意的順序

在建立了cfilefind物件後,先執行::findfile()函式,然後執行::findnextfile(),然後選擇執行(獲得檔案屬性類)的函式或者(判斷檔案屬性類)函式。

7、cfilefind類成員函式的詳細分析

virtual bool findfile(lpctstr pstrname = null,dword dwunused = 0);

該函式若返回非0 則表明執行成功,0 則表明執行不成功。

pstrname:需要查詢的檔名,例:「e://程式設計工具//vc++//mfc例子.rar」,「e://程式設計工具//vc++//mfc*.rar」,「e://程式設計工具//vc++//*.*」,也可以是null表示「*.*」。

dwunused:必須為0

virtual bool findnextfile();

該函式返回值非0 還有符合條件的檔案, 0表示是最後乙個檔案。

virtual bool getcreationtime(filetime *pfiletime) const;

virtual bool getcreationtime(ctime& reftime) const;

該函式用來獲得查詢到的某個檔案的建立時間,返回值非0 獲得建立時間成功操作,0表示執行獲得建立時間失敗或者findnextfile()沒有被執行的時候。

filetime  *:容納時間的結構指標

此處介紹:filetime和ctime相互轉換的處理方法:

filetime轉ctime的方法:

a、ctime物件在初始化時可以傳遞filetime結構

filetime ft;

ctime time(ft);

b、將filetime轉換為systemtime,然後ctime物件在初始化時可以傳遞systemtime結構

filetime ft;

systemtime st;

bool bsuccess = ::filetimetosystemtime(&ft , &st);

ctime time(st);

ctime轉filetime方法:

ctime time(ctime::getcurrenttime());

systemtime st;

time.getassystemtime(st);

filetime ft;

::systemtimetofiletime(&st,&ft);

virtual bool getlastaccesstime(filetime *pfiletime) const;

virtual bool getlastaccesstime(ctime& reftime) const;

該函式用來獲得某個檔案最後被訪問的時間,非0表示執行成功,0表示執行失敗或者findnextfile()函式沒有執行的時候。

virtual bool getlastwritetime(filetime *pfiletime) const;

virtual bool getlastwritetime(ctime& reftime) const;

該函式用來獲得某個檔案最後被訪問的時間,非0表示執行成功,0表示執行失敗或者findnextfile()函式沒有執行的時候。

virtual cstring getfilepath() const;

該函式用來獲得查詢到的檔案絕對路徑,必須在執行了findnextfile()後該函式才能執行成功。

返回的結果是cstring物件,例「e://程式設計工具//vc++

virtual cstring getfilename() const;

該函式用來獲得查詢到的檔案的全稱,必須在執行了findnextfile()後該函式才能執行成功。

返回的結果是cstring物件,例「mfc.rar」

virtual cstring getfiletitle() const;

該函式用來獲得查詢到的檔案的名稱,必須在執行了findnextfile()後該函式才能執行成功。

返回的結果是cstring物件,例「mfc」

virtual cstring getroot() const;

該函式用來獲得查詢到的檔案的根目錄,必須在執行了findnextfile()後該函式才能執行成功。

返回的結果是cstring物件,例「e://程式設計工具//vc++//」

virtual cstring getfileurl() const;

該函式用來獲得查詢到的檔案的url路徑,必須在執行了findnextfile()後該函式才能執行成功。

返回的結果是cstring物件,例「file://e://程式設計工具//vc++

dword getlength() const;

該函式返回值獲得查詢到的檔案的長度,必須在執行了findnextfile()後該函式才能執行成功。

bool isarchived() const;

該函式用來判斷查詢的檔案屬性是否是檔案檔案,非0表示是,0表示不是。必須在執行了findnextfile()後該函式才能執行成功

bool  iscompressed() const;

該函式用來判斷查詢的檔案屬性是否是壓縮檔案,非0表示是,0表示不是。必須在執行了findnextfile()後該函式才能執行成功

bool isdirectory() const;

該函式用來判斷查詢的檔案屬性是否是路徑檔案,非0表示是,0表示不是。必須在執行了findnextfile()後該函式才能執行成功

bool isdots() const;

該函式用來判斷查詢的檔案屬性是否是「.」,「..」,非0表示是,0表示不是。必須在執行了findnextfile()後該函式才能執行成功

bool ishidden() const;

該函式用來判斷查詢的檔案屬性是否隱藏檔案,非0表示是,0表示不是。必須在執行了findnextfile()後該函式才能執行成功

bool isnormal() const;

該函式用來判斷查詢的檔案屬性是否正常檔案,非0表示是,0表示不是。必須在執行了findnextfile()後該函式才能執行成功

bool isreadonly() const;

該函式用來判斷查詢的檔案屬性是否唯讀檔案,非0表示是,0表示不是。必須在執行了findnextfile()後該函式才能執行成功

bool issystem() const;

該函式用來判斷查詢的檔案屬性是否系統檔案,非0表示是,0表示不是。必須在執行了findnextfile()後該函式才能執行成功

bool istemporary() const;

該函式用來判斷查詢的檔案屬性是否臨時檔案,非0表示是,0表示不是。必須在執行了findnextfile()後該函式才能執行成功

bool matchesmask(dword dwmask) const;

該函式用來判斷查詢的檔案的綜合屬性,非0表示是,0表示不是。必須在執行了findnextfile()後該函式才能執行成功

dwmask引數的使用方法:幾種檔案屬性採用或運算(|)

檔案屬性的結構定義:

file_attribute_archive:檔案檔案

file_attribute_compressed:壓縮檔案

file_attribute_directory:路徑檔案

file_attribute_normal:正常檔案

file_attribute_readonly:唯讀檔案

file_attribute_system:系統檔案

file_attribute_temporary:臨時檔案

file_attribute_hidden:隱藏檔案

MFC利用CFileFind 類實現資料夾的複製

實現檔案複製過程時,乙個問題i是我糾結了許久,cfilefind 類的成員函式 getfilepath 與getfilename 其實很好理解的兩個函式,乙個是獲得檔案的路徑,乙個是獲得檔案的名字。但我卻在理解上犯了乙個錯誤,就是檔案路徑究竟包不包含檔案名字,如有檔案c test 1.txt 那麼它...

類模板的使用 類模板使用總結

歸納以上的介紹,可以這樣宣告和使用類模板 先寫出乙個實際的類。將此類中準備改變的型別名 如int要改變為float或char 改用乙個自己指定的虛擬型別名 如上例中的t 在類宣告前面加入一行,格式為 templatetemplate class a 類體用類模板定義物件時用以下形式 類模板名 實際型...

Java Date類的使用總結

date類表示特定的瞬間,精確到毫秒。有2種方法可以建立date物件 這裡不考慮已過時的建構函式 1 public date 分配 date 物件並初始化此物件,以表示分配它的時間 精確到毫秒 1 test 2public void test1 sun oct 23 22 39 14 cst 201...