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