VC 中遍歷整個目錄樹查詢檔案

2021-04-26 09:28:31 字數 1261 閱讀 2785

在應用程式的開發過程中,經常會遇到如何查詢某一檔案以確定此檔案路徑的問題。利用cfilefind類可以比較方便地在當前目錄下進行檔案查詢,但卻不能對其子目錄中的檔案進行搜尋。而實際應用中往往需要對某一整個目錄樹,甚至是整個c盤或d盤驅動器進行檔案搜尋。通過實踐,我們在visual c++ 6.0中程式設計實現了如何遍歷任意目錄樹,以查詢某一特定的檔案。

在下面的具體陳述中可以看到,在確定要查詢的檔名和要進行搜尋的目錄的名稱後,將呼叫函式search_directory進行檔案的查詢。首先依次查詢當前目錄下的每乙個實體(檔案或是子目錄),如果是某一子目錄,則進入該子目錄並遞迴呼叫函式search_dirctory進行查詢,查詢完畢之後, 再返回上一級目錄;如果不是子目錄而是某一檔案,則判斷其是否就是我們要查詢的檔案,如果是則輸出其完整的檔案路徑。這樣,通過search_directory函式的反覆遞迴呼叫,就可以實現對整個目錄,包括子目錄的遍歷搜尋。下面將舉例詳細講述如何在vc++中程式設計實現在整個目錄樹中的檔案查詢。

1.在visual c++ 6.0(vc++ 5.0與之類似)中用預設方式建立了一基於對話方塊的應用程式search。在主視窗對話方塊上放置一命令按鈕,其caption為「search file」,id為id—button—search。單擊此按鈕將完成檔案的查詢工作。

2.利用classwizard為「search file」按鈕的bn_clicked 事件新增處理函式onbuttonsearch,**如下:

#include 〈direct.h〉

#include 〈io.h〉

......

void csearchdlg::onbuttonsearch()

3.在csearchdlg類中增加成員函式search_directory,它將完成具體的檔案查詢工作,**如下:

void csearchdlg::search_directory(char* szfilename)

}else // 如果第乙個實體不是目錄, 則檢查是否是要查詢的檔案

}// 繼續對當前目錄中的下乙個子目錄或檔案進行與上面同樣的查詢

while(!(_findnext(handle,&filestruct)))

}else}}

_findclose(handle);  // 最後結束整個查詢工作  

}這樣我們就可以對整個目錄進行遍歷搜尋,查詢某一特定的檔案,並輸出顯示其完整的檔案路徑。以上的程式在visual c++ 6.0中已除錯通過。

遍歷整個目錄樹查詢檔案

在下面的具體陳述中可以看到,在確定要查詢的檔名和要進行搜尋的目錄的名稱後,將呼叫函式search directory進行檔案的查詢。首先依次查詢當前目錄下的每乙個實體 檔案或是子目錄 如果是某一子目錄,則進入該子目錄並遞迴呼叫函式search dirctory進行查詢,查詢完畢之後,再返回上一級目錄...

遍歷目錄查詢檔案

hresult findfile cstdstring directory,cstdstring filename directory t f 新建資料夾 filename t memset tmpdirexpr,0,max path sizeof tchar strcat tmpdirexpr,d...

遍歷整個目錄樹的檔案和目錄

在開發中我們常常需要遍歷整個目錄樹,這是我們寫乙個這樣的工具類,以後就方便多了,這個類中可以通過使用local 方法產生由本地目錄中的檔案構成的file物件陣列,或者通過使用walk 方法產生給定目錄下的由整個目錄樹中所有檔案構成的list.例子 輔助列印的工具類 public class ppri...