VB考試教程:文件系統(tǒng)對(duì)象(FileSystemObject)編程

字號(hào):

五、文件系統(tǒng)對(duì)象(FileSystemObject)編程
    1、File System Object 模型介紹
    Visual Basic 的一個(gè)新功能是 File System Object (FSO) 對(duì)象模型,該模型提供了一個(gè)基于對(duì)象的工具來(lái)處理文件夾和文件。這使您除了使用傳統(tǒng)的Visual Basic 語(yǔ)句和命令之外,還可以使用您所熟悉的帶有一整套屬性、方法和事件的 object.method 語(yǔ)法來(lái)處理文件夾和文件。
    FSO 對(duì)象模型使應(yīng)用程序能夠創(chuàng)建、改變、移動(dòng)和刪除文件夾,或者檢測(cè)是否存在指定的文件夾,如果存在,在哪。FSO 對(duì)象模型也能使您獲取關(guān)于文件夾的信息,諸如名稱(chēng)、創(chuàng)建日期或最近修改日期等等。FSO 對(duì)象模型也使得對(duì)文件的處理變得更加簡(jiǎn)單。在處理文件時(shí),首要目標(biāo)就是以一種可以有效利用空間和資源、并且易于存取的格式來(lái)存儲(chǔ)數(shù)據(jù)。需要能夠創(chuàng)建文件、插入和修改數(shù)據(jù)、以及輸出(讀)數(shù)據(jù)。雖然可以將數(shù)據(jù)存儲(chǔ)在諸如 Jet 或 SQL 這樣的數(shù)據(jù)庫(kù)中,但是這樣做將在應(yīng)用程序中加入相當(dāng)數(shù)量的額外開(kāi)支。出于多種原因,您不想有這樣的額外開(kāi)支,或者數(shù)據(jù)存取要求不需要用一個(gè)與全功能數(shù)據(jù)庫(kù)關(guān)聯(lián)的所有額外功能。在這種情況下,用二進(jìn)制或文本文件來(lái)存儲(chǔ)數(shù)據(jù)是的解決方法。包含在 Scripting 類(lèi)型庫(kù) (Scrrun.Dll) 中的FSO 對(duì)象模型支持通過(guò)TextStream 對(duì)象創(chuàng)建和操作文本文件。但是,它還不支持二進(jìn)制文件的創(chuàng)建和操作。要操作二進(jìn)制文件,請(qǐng)使用帶 Binary 標(biāo)志的 Open 命令(關(guān)于如何操作二進(jìn)制文件的詳細(xì)信息已在前面介紹過(guò),請(qǐng)參閱)。
    2、文件系統(tǒng)對(duì)象(File System Object)
    FSO對(duì)象模型包括這些對(duì)象:
    對(duì)象 描述
    Drive 允許收集關(guān)于系統(tǒng)所用的驅(qū)動(dòng)器的信息,諸如驅(qū)動(dòng)器有多少可用空間,其共享名稱(chēng)是什么,等等。請(qǐng)注意,一個(gè)“驅(qū)動(dòng)器”并不一定是一個(gè)硬盤(pán)。它可以是 CD-ROM 驅(qū)動(dòng)器、一個(gè)RAM 盤(pán)等等。而且,驅(qū)動(dòng)器不一定是和系統(tǒng)物理地連接;也可以通過(guò)一個(gè) LAN進(jìn)行邏輯地連接。
    Folder 允許創(chuàng)建、刪除或移動(dòng)文件夾,并向系統(tǒng)查詢(xún)文件夾的名稱(chēng)、路徑等。
    Files 允許創(chuàng)建、刪除或移動(dòng)文件,并向系統(tǒng)查詢(xún)文件的名稱(chēng)、路徑等
    FileSystemObject 該組的主要對(duì)象,提供一整套用于創(chuàng)建、刪除、收集相關(guān)信息、以及通常的操作驅(qū)動(dòng)器、文件夾和文件的方法。與本對(duì)象相關(guān)聯(lián)的很多方法復(fù)制了其它對(duì)象中的方法。
    TextStream 允許您讀和寫(xiě)文本文件。
    關(guān)于 FSO 對(duì)象模型中各種屬性、方法和事件的信息,請(qǐng)使用 Visual Basic 中的“對(duì)象瀏覽器”(按 F2 鍵)并查看 Scripting 類(lèi)型庫(kù)?! ?BR>    FSO對(duì)象模型包含在一個(gè)稱(chēng)為Scripting的類(lèi)型庫(kù)中,此類(lèi)型庫(kù)位于Scrrun.DII文件中。如果還沒(méi)有引用此文件,從“工程”菜單的“引用”對(duì)話(huà)框選擇"Microsoft Scripting Runtime "項(xiàng)。然后就可以使用"對(duì)象瀏覽器"來(lái)查看其對(duì)象、集合、屬性、方法、事件以及它的常數(shù)。
    3、FSO 對(duì)象模型編程
    FSO對(duì)象模型編程包括三項(xiàng)主要任務(wù):
    使用CreateObject方法,或?qū)⒁粋€(gè)變量聲明為FileSystemObject對(duì)象類(lèi)型來(lái)創(chuàng)建一個(gè)FileSystemObject對(duì)象。
    對(duì)新創(chuàng)建的對(duì)象使用適當(dāng)?shù)姆椒ā?BR>    訪(fǎng)問(wèn)該對(duì)象的屬性。
    下面分別說(shuō)明。
    (1)創(chuàng)建 FileSystemObject 對(duì)象
    第一步是創(chuàng)建一個(gè) FileSystemObject 對(duì)象以便進(jìn)行處理??梢酝ㄟ^(guò)如下兩種方法完成:
    將一個(gè)變量聲明為 FileSystemObject 對(duì)象類(lèi)型:
    Dim fso As New FileSystemObject
    使用 CreateObject 方法來(lái)創(chuàng)建一個(gè) FileSystemObject 對(duì)象:
    Set fso = CreateObject("Scripting.FileSystemObject")
    在上面的語(yǔ)法中, Scripting 是類(lèi)型庫(kù)的名稱(chēng),而 FileSystemObject 則是想要?jiǎng)?chuàng)建一個(gè)實(shí)例的對(duì)象的名稱(chēng)。
    注意:第一種方法只在 Visual Basic 中有效,而第二種方法在 Visual Basic或 VBScript 中都是可行的。
    (2)使用適當(dāng)?shù)姆椒?BR>    下一步就是使用該 FileSystemObject 對(duì)象的適當(dāng)方法。例如,如果想要?jiǎng)?chuàng)建一個(gè)新對(duì)象,既可以使用 CreateFolder 方法也可以使用 CreateTextFile 方法(FSO 對(duì)象模型不支持創(chuàng)建或刪除驅(qū)動(dòng)器)。如果想要?jiǎng)h除對(duì)象,可以使用 FileSystemObject 對(duì)象的 DeleteFile 和DeleteFolder 方法,或者 File 和 Folder 對(duì)象的 Delete 方法。使用適當(dāng)?shù)姆椒?,還可以復(fù)制、移動(dòng)文件和文件夾。
    請(qǐng)注意,F(xiàn)ileSystemObject 對(duì)象模型中有一些功能是冗余的。例如,要復(fù)制一個(gè)文件,既可以使用 FileSystemObject 對(duì)象的 CopyFile 方法,也可以使用 File 對(duì)象的 Copy 方法。這兩者的功能是完全相同的。兩者同時(shí)提供的編程靈活性。
    (3)訪(fǎng)問(wèn)已有的驅(qū)動(dòng)器、文件和文件夾
    要訪(fǎng)問(wèn)一個(gè)已有的驅(qū)動(dòng)器、文件或文件夾,請(qǐng)使用 FileSystemObject 對(duì)象中相應(yīng)的 "get" 方法:
    GetDrive
    GetFolder
    GetFile
    例如:
     Dim fso As New FileSystemObject, fil As File
     Set fil = fso.GetFile("c:\test.txt")
    但是,請(qǐng)注意,并不需要對(duì)新創(chuàng)建的對(duì)象使用"get" 方法,因?yàn)?create" 函數(shù)已經(jīng)返回了一個(gè)句柄到新創(chuàng)建的對(duì)象。例如,如果使用 CreateFolder 方法創(chuàng)建了一個(gè)新的文件夾,就沒(méi)有必要使用 GetFolder 方法來(lái)訪(fǎng)問(wèn)該對(duì)象的諸如名稱(chēng)、路徑、大小等屬性。只要給 CreateFolder 函數(shù)設(shè)置一個(gè)變量來(lái)獲取新建文件夾的句柄,然后就可以訪(fǎng)問(wèn)其屬性、方法和事件