http://msdn.microsoft.com/zh-tw/library/aa711216(VS.71).aspx
使用 FileSystemObject 存取檔案
檔案系統物件 (FSO) 模型提供用來處理資料夾及檔案的物件架構工具。此模型可讓您使
用熟悉的 object.method 語法及大量的屬性 (Property)、方法及事件來處理資料夾及檔
案。您也可採用傳統 Visual Basic 陳述式及指令。
FSO 模型使您的應用程式能夠建立、變更、移動及刪除資料夾,或決定是否有特定資料夾
存在及存在於何處。而且還能讓您取得關於資料夾的資訊,諸如資料夾名稱及建立或最後
修改的日期。
FSO 模型也使得檔案處理更加容易。當處理檔案時,主要目標是要使用更有效率、更容易
存取的格式來儲存檔案。您必須能夠建立檔案、插入及變更資料,以及輸出 (讀取) 資料
。雖然您可用資料庫來儲存檔案,但是如此做會顯著加重應用程式的負擔。您可能不希望
有這樣的負擔,或者您的資料存取需求不需要與全功能資料關聯的額外功能。在此情況下
,在文字檔或二進位檔中儲存資料是最有效率的方案。
指令碼型別程式庫 (Scrrun.dll) 所包含的 FSO 模型支援透過 TextStream 物件來建立
及操作文字檔;但是, FSO 模型不支援二進位檔。若要操作二進位檔,請在 FileOpen
函式中使用 Binary 關鍵字。
下面表格所列出的物件組成 FSO 模型:
物件 說明
FileSystemObject 允許您建立、刪除、取得相關資料以及一般操作的磁碟、資料夾及檔
案。與此物件關聯的許多方法複製了其他物件的方法。
Drive 允許您蒐集關於連接至系統磁碟的資訊,諸如磁碟的可用空間及其共用名稱。請注
意,FSO 模型下的「磁碟」不一定是指硬碟機:而可能是指光碟機、RAM 磁碟等等。磁碟
也不需要實體地連接至系統;而是可透過區域網路 (LAN) 邏輯地連接。
Folder 允許您建立、刪除或移動資料夾,以及向系統查詢資料夾名稱、路徑及其他資訊
。
File 允許您建立、刪除或移動檔案,以及向系統查詢檔案名稱、路徑及其他資訊。
TextStream 讓您能夠讀取及寫入文字檔。
若需有關 FSO 模型中各種屬性 (Property)、方法及事件的資訊,請按下 CTRL+ALT+J 以
使用 Visual Basic 中的物件瀏覽器,並查詢指令檔型別程式庫。如果清單中未出現指令
檔型別程式庫,請建立至指令檔型別程式庫的參考,如下一章節內容所述。
FSO 模型中的程式撰寫
FSO 模型中的程式撰寫需要三件主要工作:
使用 CreateObject 方法來建立 FileSystemObject 物件,或將變數維度定義
(Dimension) 為 FileSystemObject 物件。
對新建立的物件使用適合的方法。
存取物件屬性 (Property)。
FSO 模型包含於位於 Scrrun.dll 中的指令碼型別程式庫之中。如果還沒有指令檔型別程
式庫的參考,請建立參考。
若要建立指令檔型別程式庫 (Scrrun.dll) 的參考
在 Project 功能表上按一下 [加入參考],然後按一下 [COM] 索引標籤。
從 [元件名稱] 清單中選取 [Microsoft Scripting Runtime],然後按一下 [選取]。
現在,您可使用物件瀏覽器來檢視 FSO 模型的物件、集合、屬性 (Property)、方法、事
件及常數。
若要建立 FileSystemObject 物件
將變數維度定義為 FileSystemObject 型別,如下面的程式碼所示:
Dim fso As New FileSystemObject
-或-
使用 CreateObject 方法來建立 FileSystemObject 物件,如下面的程式碼所示:
fso = CreateObject("Scripting.FileSystemObject")
在第二個範例中,Scripting 是型別程式庫名稱,而 FileSystemObject 是您想要建立執
行個體 (Instance) 的物件名稱。
注意 第一個方法只適用於 Visual Basic,第二個方法適用於 Visual Basic 或
VBScript。
安全性提示 請勿根據檔案的副檔名決定檔案的內容。例如,名稱為 Form1.vb 的檔案
可能不是 Visual Basic .NET 原始程式檔 (Source File)。
FSO 方法
下面的表格列出 FSO 方法及其執行的工作:
工作 命令
建立新的物件 CreateFolder 或 CreateTextFile
刪除檔案或資料夾 DeleteFile 或 File.Delete;DeleteFolder 或 Folder.Delete
複製物件 CopyFile 或 File.Copy;CopyFolder 或 Folder.Copy
移動物件 MoveFile 或 File.Move;MoveFolder 或 Folder.Move
存取現有的磁碟、資料夾或檔案 GetDrive、GetFolder 或 GetFile
注意 FSO 模型並不支援建立或刪除磁碟。
如您所見,FileSystemObject 物件模型中的某些功能是多餘的。例如,您可使用
FileSystemObject 物件中的 CopyFile 方法,或是您可使用 File 物件中的 Copy 方法
。這兩個方法的作用相同;包含這兩個版本可為您提供最大的程式撰寫彈性。
但是請注意,由於 Create 函式會傳回新建立物件的控制代碼,所以您不需要使用 Get
方法。例如,如果您使用 CreateFolder 方法來建立新資料夾,則不需要使用
GetFolder 方法來存取其屬性 (Property),諸如 Name、Path 或 Size。只要設定
CreateFolder 函式變數來取得新建立資料夾的控制代碼,然後存取其屬性 (Property)
、方法及事件即可。
磁碟資訊
Drive 物件可讓您取得關於實體或透過網路連接至系統磁碟的資訊。其屬性 (Property)
包括下列資訊:
屬性 (Property) 說明
TotalSize 磁碟機總大小,以位元組為單位
AvailableSpace、FreeSpace 磁碟機可用空間,以位元組為單位
DriveLetter 指派給磁碟機的代號
DriveType 磁碟機類型 (抽取式、固定、網路、光碟機、RAM 磁碟)
SerialNumber 磁碟機序號
FileSystem 磁碟機所使用的檔案系統類型 (FAT、FAT32 或 NTFS)
IsReady 磁碟機是否可使用
ShareName、VolumeName 共用名稱及/或磁碟區名稱ꤊPath、RootFolder 磁碟機的路徑或根資料夾
App.Path、ChDir、ChDrive 及 CurDir
如果使用 Path 屬性 (Property) (App.Path)、ChDrive 及 ChDir 陳述式或 CurDir 函
式,您必須了解它們會傳回通用命名慣例 (Universal Naming Convention,UNC) 路徑 (
亦即,以 \\Server\Share... 開始的路徑),而不是傳回磁碟路徑 (諸如 e:\Folder),
端視您如何執行程式或專案。
在下列情況下,App.Path 會傳回 UNC 路徑:
您從共用網路載入專案後執行該專案,即使共用網路對應至磁碟機代號。
您從共用網路執行編譯的可執行檔 (但只限於使用 UNC 路徑執行的情況)。
ChDrive 無法處理 UNC 路徑,而且當 App.Path 傳回 UNC 路徑時會發生錯誤。處理此項
錯誤的方式是在 ChDrive 陳述式之前加上 On Error Resume Next,或是測試 App.Path
的前兩個字元以查看是否有反斜線。
命令提示字元一定會有目前目錄的磁碟路徑,所以會將 CurDir 設定為磁碟路徑。ChDir
不會發生錯誤,但是無法將目錄從磁碟路徑變更成 UNC 路徑。此情況的唯一解決方式是
找出對應到 UNC 路徑所指定之共用磁碟的本機磁碟,或使用網路指令來建立此類的對應
。
如果將專案從共用網路載入至 Visual Basic 開發環境 UNC 路徑或對壓