丁志云



摘要:該文主要研究在VB中如何遍歷指定文件夾中所有文件的方法,一共列舉出三種不同的方法,并比較它們的優缺點,為應用程序中訪問文件提供支持。
關鍵詞:遍歷文件;API;VB;FSO
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2018)29-0100-02
Abstract: This paper mainly studies how to traverse all the files in the specified folder in VB, lists three different methods, and compares their advantages and disadvantages to provide support for accessing files in applications.
Key words: Ergodic file;API;VB;FSO
隨著信息技術和網絡技術的高速發展,計算機已經徹底改變了人們的生活方式,當今社會各行各業已經逐步實現了網絡化、信息化管理,各種應用系統如雨后春筍般的蓬勃發展。在這些系統中一般都免不了對文件進行操作與管理。在文件操作中,最基本的是瀏覽文件,列出文件清單。本文探索在VB6.0環境下三種遍歷文件的方法并比較它們的優缺點。
1使用FSO對象模型遍歷文件
1.1 FSO簡介
FSO(文件系統對象)全稱為FileSystemObject,它提供了在Windows中操作本地文件(夾)的功能,FSO對象模型簡單易用,在許多高級語言中都被支持。
FSO對象模型可以實現文件(夾)的創建、改變、移動和刪除等常見操作,也可以獲取文件(夾)的名稱、大小、屬性、創建日期或最近修改日期等信息,還可以檢測文件(夾)是否存在。通過FSO對象模型也可以獲取當前系統驅動器信息,如驅動器的種類(硬盤、CD-ROM還是可移動磁盤)、磁盤剩余空間等等。
1.2 FSO的常見對象
FSO的常見對象見表1。
每一個對象都有諸多屬性,這里不一一列出,讀取可以查看相關資料及幫助。
1.3 FSO的創建
由于FSO對象包含在Scripting類型庫(Scrrun.dll)中,所以在使用前首先需要在工程中引用這個文件,在VB中,單擊“工程”→“引用”,然后在“引用”對話框中選中“Microsoft Scripting Runtime”前的復選框,單擊“確定”即可。
2使用Windows API函數遍歷文件
2.1 API函數簡介
API(應用程序編程接口),全稱是Application Programming Interface,是一些預先定義的底層函數,是系統提供給用戶用于進入操作系統核心,進行高級編程的途徑。
API函數包含在Windows系統目錄下的動態連接庫文件(*.dll)中。Windows API是一系列用來控制Windows的各個部件的外觀和行為的函數。
在VB中應用API函數實現某一功能必須在VB的窗體模塊或標準模塊中先聲明相應的API函數,在聲明了API函數之后,調用它的方法與調用VB自己的成員函數相同。
2.2 API函數的常見動態連接庫
API函數集是由操作系統或開發環境提供的,以DLL動態連接庫的形式出現,每一個動態連接庫文件中包含幾十個甚至上百個API函數。常見的動態連接庫及功能如表2所示。
當然了,這只是主要的三個動態連接庫,其他比較常用的還有網絡服務(Winsock32.dll)、多媒體服務(Winmm.dll)等等。
2.3遍歷文件的API函數
遍歷文件過程中用到的API函數主要有FindFirstFile、FindNextFile、FindClose三個,在VB中聲明如下。
4三種方法比較
1)第1種方法和第2種方法需要借助第三方DLL文件,而第3種方法使用VB本身提供的成員函數即可完成文件遍歷。
2)第1種方法簡單易用,但文件名中不支持通配符*和?,如果要列出符合某一條件的文件名,需要在找到后進一步編程實現,處理起來不方便,而第2種方法和第3種文件名中支持使用通配符*和?,對查找某一類文件這樣的要求比較適合。
3)第1種方法查找的結果都是文件,而第2種方法除了文件外還有文件夾,需要使用條件過濾,第3種方法當將屬性參數Attributes設置為vbDirectory時,不僅查找到文件還可以查找到文件夾,這在編程時需要注意的事項。
4)第3種方法只能查找到文件名,文件的其他屬性不能獲得,限制了應用,而第1種方法和第2種方法還可以獲取文件的其他屬性,如文件的大小,文件的創建日期,最后修改日期等信息。
5小結
本文基于VB通過三種不同的方法遍歷文件,顯示文件名,給出的實現代碼被簡化,沒有加入出錯處理程序,讀者可以進一步完善。另外如果要列出指定文件夾及其子文件夾中的所有文件可以在此程序上稍加改變,主要使用遞歸方法實現。遍歷文件在許多場合有非常多的應用,相信還有其他方法實現,希望起到拋磚引玉的作用。上述代碼在Windows7下,由Microsoft Visual Basic6.0編譯通過運行。
參考文獻:
[1] 林卓然.VB語言程序設計[M].北京:電子工業出版社,2012.
[2] 張增良,侯申.程序設計基礎教程(VB版)[M]. 西安:西安交通大學出版社,2014.
【通聯編輯:王力】