VB6中的FSO對象模型
發表于:2007-07-14來源:作者:點擊數:
標簽:
在編程中,我們經常需要對文件系統中的驅動器、文件夾和文件進行處理,比如收集驅動器的相關信息;創建、添加、移動或刪除文件夾和文件等。在 VB 6中新提供了一套稱為FSO(File System Object)對象模型來對文件系統進行訪問處理。該模型提供了一個基于對象
在編程中,我們經常需要對文件系統中的驅動器、文件夾和文件進行處理,比如收集驅動器的相關信息;創建、添加、移動或刪除文件夾和文件等。在
VB6中新提供了一套稱為FSO(File System Object)對象模型來對文件系統進行訪問處理。該模型提供了一個基于對象的工具,通過它所提供的一系列屬性和方法,我們可以在應用程序中更簡單、靈活地對文件系統進行各種操作。
一、FSO簡介
FSO對象模型包含以下幾種對象:
Drive對象:允許收集系統物理或通過LAN與系統邏輯連接的硬盤、CD-ROM等驅動器的可用空間、共享名等信息。
Folder對象:允許創建、刪除或移動文件夾,并向系統查詢文件夾的名稱、路徑等。
Files對象:允許創建、刪除或移動文件,并向系統查詢文件的名稱、路徑等。
TextStream對象:允許創建和讀寫文本文件。
FileSystemObject對象:提供一整套用于驅動器、文件夾和文件操作的方法,在功能上可以把它看作是上面幾個對象的集合并且經常與它們配合使用。與該對象相關聯的很多方法重復了前面四個對象中的方法,因此我們既可以通過FileSystemObject對象來對驅動器、文件夾和文件進行大多數操作,也可以通過對應的驅動器、文件夾或文件對象對這些組件進行操作。FSO模型通過兩種方法實現對同一對象的操作,其操作效果是相同的,提供這種冗余功能的目的是為了實現最大的編程靈活性。
FSO對象模型包含在一個稱為Scripting的類型庫中,此類型庫位于Scrrun.dll文件中,可從“工程”選單的“引用”對話框中選擇“Microsoft Scripting Runtime”項來引用此文件。
創建一個FileSystemObject對象,可以通過如下兩種方法來完成:1?將一個變量聲明為FileSystemObject對象類型:Dim fso As New FileSystemObject;2?使用CreateObject方法來創建:Set fso=CreateObject(″Scripting.FileSystemObject″)。
二、對驅動器的操作
對驅動器的操作主要通過Drive對象并配合FileSystemObject對象,FSO不支持進行創建或刪除驅動器的操作,而只允許收集關于系統所用驅動器的信息。通過該對象的屬性可以獲得下列信息:以字節表示的驅動器可用空間(AvailableSpace或FreeSpace);為驅動器指定的字母號(DriveLetter);驅動器類型(DriveType);驅動器使用的文件系統類型,諸如FAT、FAT32、NTFS等(FileSystem);驅動器是否可用(IsReady);驅動器的路徑或根文件夾(Path和RootFolder);驅動器序列號(SerialNumber);共享名或卷標名(ShareName和VolumeName);以字節表示的驅動器總空間(TotalSize)。下面一例說明了如何收集有關驅動器的信息:
Private Sub Command1—Click()
Dim fso As New FileSystemObject, drv As Drive, str As String
Set drv=fso.GetDrive(fso.GetDriveName(″c:″))
De
bug.Print ″Total Space: ″ & FormatNumber(drv.TotalSize / 1024, 0) & ″Kb″
Debug.Print ″Free Space: ″ & FormatNumber(drv.FreeSpace / 1024, 0) & ″Kb″
End Sub
三、對文件夾的操作
Folder對象允許通過所提供的方法來復制(Copy)、刪除(Delete)或移動(Move)文件夾,并通過其屬性向系統查詢其名稱(Name)、路徑(Path)以及創建日期(DateCreated)等。FileSystemObject 對象對文件夾的操作方法有創建(CreateFolder)、復制(CopyFolder)、移動(MoveFolder)和刪除(DeleteFolder)。在進行上述操作之前,首先要獲得該文件夾的訪問句柄(GetFolder)。下例說明了如何對文件夾進行操作:
Private Sub Command2—Click()
Dim fso As New FileSystemObject, fldr As Folder
Set fldr=fso.GetFolder(″c:″)
′獲得當前文件夾的訪問句柄
Debug.Print ″Parent folder name is: ″ & fldr
′打印文件夾名
Debug.Print ″Contained on drive ″ & fldr.Drive ′打印驅動器名
fso.CreateFolder (″c:\Temp″)
′用FileSystemObject對象創建一個新的文件夾
fso.DeleteFolder (″c:\Temp″)
′刪除新建的文件夾
End Sub
訪問一個對象,要首先用“Get”方法獲得該對象的訪問句柄,但如果是用“Create”函數新創建一個對象, 函數會返回一個句柄到新創建的對象,這時只要設置一個變量來獲取該句柄即可,不必再用“Get”方法。如:Set fldr=fso.CreateFolder(″C:\Temp2″)。
四、對文件的操作
讀寫文件,在VB6之前都是使用Open等語句來實現,FSO支持通過TextStream對象來創建和讀寫文本文件。
FSO通過CreateTextFile、OpenTextFile、OpenAsTextStream 三種方法來創建一個順序文本文件。文件創建后,就可分三步寫入數據:
1.?利用FileSystemObject對象的OpenTextFile方法或File對象的OpenAsTextStream 方法打開文本文件以備寫入數據。
2.?使用TextStream 對象的Write、WriteLine或WriteBlankLines方法寫入數據。
3.?使用TextStream對象的Close方法關閉文件。
下例說明了如何創建文本文件:
我們可使用TextStream 對象的Read、ReadLine或ReadAll方法從一個文本文件中讀取數據。
Private Sub Command3—Click()
Dim fso As New FileSystemObject, fil As File, ts As TextStream
fso.CreateTextFile ″c:\testfile.txt″
Set fil=fso.GetFile(″c:\testfile.txt″)
Set ts=fil.OpenAsTextStream(ForWriting)
ts.Write (″這是一個
測試文件!″)
ts.Close
Set ts=fil.OpenAsTextStream(ForReading)
s=ts.ReadLine
MsgBox s
ts.Close
End Sub
除了創建與讀寫文件之外,VB6還可通過FileSystemObject對象對文件進行復制(CopyFile)、移動(MoveFile)與刪除(DeleteFile)等操作,在File對象中等效的方法有Copy 、Move和Delete。例程如下 :
Private Sub Command4—Click()
Dim fso As New FileSystemObject, txtfile As TextStream, fil1 As File, fil2 As File
Set txtfile=fso.CreateTextFile(″c:\testfile.txt″, True)
txtfile.Write (″這是一個測試文件!″)
txtfile.Close
Set fil1=fso.GetFile(″c:\testfile.txt″)
′獲得一個文件句柄
fil1.Copy (″c:\temp1\testfile.txt″)
′將該文件復制到\temp1目錄下
fil1.Move (″c:\temp2\testfile.txt″)
′將該文件移動到\temp2目錄下
Set fil1=fso.GetFile(″c:\temp1\testfile.txt″)
′獲得這些文件當前位置的句柄
Set fil2=fso.GetFile(″c:\temp2\testfile.txt″)
fil1.Delete
fil2.Delete
End Sub
原文轉自:http://www.anti-gravitydesign.com