共找到5條詞條名為fso的結果 展開
- File System Object
- FileSystemObject對象
- Free Space Optics
- 詞語
- Futong Showa Optical
fso
File System Object
文件系統對象FSO的英文全稱是File System Object ,這種對象模型提出了有別於傳統的文件操作語句處理文件和文件夾的方法。通過採用object.method這種在面向對象編程中廣泛使用的語法,將一系列操作文件和文件夾的動作通過調用對象本身的屬性直接實現。
從 Visual Basic 的第一版至今,VB中有關文件的處理都是通過使用 Open 、Write以及其它一些相關的語句和函數來實現的。隨著軟體技術的不斷發展,加上面向對象編程概念的日臻成熟,這些文件操作語句已經不能適應軟體不斷增加的複雜程度的需要了。因此,從VB6.0開始,微軟提出了一個全新的文件系統對象FSO。
不僅可以象使用傳統文件操作語句那樣實現文件的創建、改變、移動和刪除,而且可以檢測是否存在指定的文件夾,如果存在,那麼,這個文件夾又位於磁碟上的什麼位置。更令人高興的是FSO 對象模型還可以獲取關於文件和文件夾的信息,如名稱、創建日期或修改日期等以及系統中使用的驅動器的信息,如驅動器的種類是CD-ROM還是可移動磁碟,當前磁碟的剩餘空間還有多少。而以前要獲取這些信息必須通過調用Windows API函數集中的相應函數才能實現。
在Scripting 類型庫 (Scrrun.Dll)中,它同時包含了Drive、Folder、File、FileSystemObject和TextStream五個對象。其中Drive用來收集驅動器的信息,如可用磁碟空間或驅動器的類型;Folder用於創建、刪除或移動文件夾,同時可以進行向系統查詢文件夾的路徑等操作;File的基本操作和Folder基本相同,所不同的是Files的操作主要是針對磁碟上的文件進行的;FileSystemObject是FSO對象模型中最主要對象,它提供了一套完整的可用於創建、刪除文件和文件夾,收集驅動器、文件夾、文件相關信息的方法。需要注意的是,FSO對象模型提供的方法是冗餘的,也就是說在實際使用中,FSO對象模型中包含的不同對象的不同方法進行的卻是同樣的操作,而且FileSystemObject對象的方法直接作用於其餘對象,所以在後面的文章中並沒有單獨提到FileSystemObject對象,千萬不要以為沒有提到就不重要,事實上FileSystemObject對象在整個FSO對象模型中無處不在;最後的TextStream對象則是用來完成對文件的讀寫操作的。
在初步了解了FSO對象模型之後,下面我們通過實際的代碼對不同的對象進行進一步的闡述。
由於FSO對象包含在Scripting 類型庫 (Scrrun.Dll)中,所以在使用前首先需要在在工程中引用這個文件,單擊“工程”,“引用”,然後在“引用”對話框中選中“Microsoft Scripting Runtime”前的複選框,然後單擊“確定”。
要創建FSO對象可以採用兩種方法,一種是將一個變數聲明為FSO對象類型:Dim fsoTest As New FileSystemObject;另一種是通過CreateObject方法創建一個FSO 對象:Set fsoTest = CreateObject(“Scripting.FileSystemObject")。在實際使用中具體採用哪種聲明方法,可根據個人的使用習慣而定。
完成了FSO對象模型的創建之後,就可以利用創建的對象模型的方法訪問下屬各個對象的屬性來獲取所需信息或進行相關操作了,具體的方法在下面結合各個對象分別講述。
上面已經提到Drive對象是用來獲取當前系統中各個驅動器的信息的。由於Drive對象沒有方法,其應用都是通過屬性表現出來的,所以我們必須熟悉Drive對象的屬性:
AvailableSpace:返回在指定的驅動器或網路共享上的用戶可用的空間容量。
DriveLetter:返回某個指定本地驅動器或網路驅動器的字母,這個屬性是只讀的。
DriveType:返回指定驅動器的磁碟類型。
FileSystem:返回指定驅動器使用的文件系統類型。
FreeSpace:返回指定驅動器上或共享驅動器可用的磁碟空間,這個屬性是只讀的。
IsReady:確定指定的驅動器是否準備好。
Path :返回指定文件、文件夾、或驅動器的路徑。
RootFolder:返回一個 Folder 對象,該對象表示一個指定驅動器的根文件夾。只讀屬性。
SerialNumber:返回用於唯一標識磁碟卷標的十進位序列號。
ShareName:返回指定驅動器的網路共享名
TotalSize:以位元組為單位,返回驅動器或網路共享的總空間大小。
VolumeName:設置或返回指定驅動器的卷標名。
從上面的屬性可以看到Drive對象基本上包含了日常操作所需的全部的驅動器信息,因此在使用中是非常方便的。下面通過一個實例講述Drive對象的使用。首先在VB中建立一個工程,然後添加一個命令按鈕,將其Caption設置為“TestDrive”,然後在click事件中加入以下代碼:
Dim fsoTest As New FileSystemObject
Dim drv1 As Drive,sReturn As String
Set drv1 = fsoTest.GetDrive(“C:\")
sReturn = “Drive " & “C:\" & vbCrLf
sReturn = sReturn & “VolumeName" & drv1.VolumeName & vbCrLf
sReturn = sReturn & “Total Space: " & FormatNumber(drv1.TotalSize / 1024,0)
sReturn = sReturn & “Kb" & vbCrLf
sReturn = sReturn & “Free Space: " & FormatNumber(drv1.FreeSpace / 1024,0)
sReturn = sReturn &;“Kb" & vbCrLf
sReturn = sReturn &;“FileSystem:" & drv1.FileSystem & vbCrLf
MsgBox sReturn
其中GetDrive方法返回一個與指定路徑中的驅動器相對應的 Drive 對象。該方法的語法格式為object.GetDrive drivespec,object是一個FSO對象的名稱,drivespec用於指定驅動器的名稱。
按F5運行上述代碼,按下TestDrive按鈕就會彈出一個消息框顯示C盤的信息。
在FSO 對象模型中,提供了豐富的有關文件夾操作的方法,這些方法分別是:
FileSystemObject對象有關文件夾的方法:
CreateFolder:創建一個文件夾。
DeleteFolder:刪除一個文件夾。
MoveFolder:移動一個文件夾。
CopyFolder:複製一個文件夾。
FolderExists:查找一個文件夾是否在驅動器上。
GetFolder:獲得已有Folder對象的一個實例。
GetParentFolderName:找出一個文件夾的父文件夾的名稱。
GetSpecialFolder:找出系統文件夾的路徑。
Folder對象的方法:
Delete :刪除一個文件夾。
Move :移動一個文件夾。
Copy:複製一個文件夾。
Name:檢索文件夾的名稱。
在此需要強調一點,前面我們曾經提到過FSO對象模型包含的方法是冗餘的,所以Folder對象的Delete、Move、Copy方法和FileSystemObject對象的DeleteFolder、MoveFolder、CopyFolder方法實際上是相同的,因此在實際使用中可以任選其中的一種。和Drive對象一樣,下面通過實例演示Folder對象的應用。在VB下新建一個工程,然後在上面添加三個命令按鈕,然後在Form1的通用部分加入以下代碼:
Option Explicit
Dim fsoTest As New FileSystemObject
Dim folder1 As Folder
並且分別在三個命令按鈕的click事件輸入以下代碼:
Private Sub CmdCreate_Click()
' 獲取 Folder 對象。
Set folder1 = fsoTest.GetFolder(“C:")
'創建文件夾
fsoTest.CreateFolder (“C:\Test")
MsgBox “folder C:\Test has created"
End Sub
Private Sub CmdDelete_Click()
' 獲取 Drive 對象。
Set folder1 = fsoTest.GetFolder(“C:")
'刪除文件夾
fsoTest.DeleteFolder (“C:\Test")
MsgBox“folder C:\Test has deleted"
End Sub
Private Sub CmdGetPro_Click()
'獲取文件夾的有關信息
Dim sReturn As String
Set folder1 = fsoTest.GetFolder(“C:\Windows")
'sReturn = “The folder's Attributes is " & folder1.Attributes & vbCrLf
'獲取一次訪問的時間
sReturn = sReturn & “The folder's last access time is " & folder1.DateLastAccessed & vbCrLf
'獲取最後一次修改的時間
sReturn = sReturn & “The folder's last modify time is " & folder1.DateLastModified & vbCrLf
'獲取文件夾的大小
sReturn = sReturn & “The folder's size is " & FormatNumber(folder1.Size / 1024,0)
sReturn = sReturn & “Kb" & vbCrLf
'判斷文件或文件夾類型
sReturn = sReturn & “The type is " & folder1.Type & vbCrLf
MsgBox sReturn
End Sub
上述代碼中提到的CreateFolder方法的語法形式為object.CreateFolder(foldername)。foldername指定了要創建的文件夾的名稱,而DeleteFolder方法的語法形式為object.DeleteFolder folderspec[,force],其中,folderspec用來指定要刪除的文件夾的名稱,force是一個可選的布爾型參數,如果希望刪除只讀屬性的文件夾則將該值設為TRUE,默認為FALSE。至於代碼中用到的 Folder 對象的屬性限於篇幅,就不詳細介紹了,讀者可參考VB文檔中的相關內容。
由於有關File對象的複製,刪除,移動等操作和Folder對象類似,所以這部分內容就不再重複。這裡主要講述利用File對象和TextStream對象操作文本文件。
通常對文本文件的操作包括在文本文件中創建數據,在文本文件中添加數據,刪除文本文件的數據等操作。這些操作都可以通過File對象和FileSystemObject對象的相關方法完成。不過在使用之前,首先要創建一個文本文件,這可以通過三種方法完成。一種方法是使用FileSystemObject對象的 CreateTextFile 方法。要創建一個空文本文件,可以用以下語句:
Dim fsoTest As New FileSystemObject,fil1 As File
Set fil 1= fsoTest.CreateTextFile(“c:\testfile.txt",True)
第二種方法是使用 FileSystemObject 對象帶 ForWriting 標誌設置的 OpenTextFile 方法,
Dim fsoTest As New FileSystemObject,ts1 As New TextStream
Set ts1 = fsoTest.OpenTextFile(“c:\testfile.txt",ForWriting)
第三種方法是使用File對象的帶 ForWriting 標誌設置的OpenAsTextStream方法:
Dim fsoTest As New FileSystemObject,fil 1As File,ts 1As TextStream
Set fsoTest = CreateObject(“Scripting.FileSystemObject")
fsoTest.CreateTextFile (“c:\testfile.txt")
Set fil1 = fsoTest.GetFile(“c:\testfile.txt")
Set ts1 = fil1.OpenAsTextStream(ForWriting)
其中CreateTextFile方法的第一個參數用來指定,第二個參數用來指定如果磁碟上已經存在要創建的文件是否覆蓋,TRUE表示覆蓋,FALSE表示不覆蓋,省略表示不覆蓋;OpenTextFile方法的第一個參數確定要打開的文本文件,第二個參數表示對該文件進行寫操作;OpenAsTextStream方法的參數和OpenTextFile方法的第二個參數含義相同。
在創建了寫入數據的文本之後就可以利用TextStream 對象的 Write 或 WriteLine 方法了,它們之間的區別在於 WriteLine 在指定的字元串末尾添加換行符,而Write方法沒有。如果想要向文本文件中添加一個空行,可以使用WriteBlankLines方法。在完成寫的動作之後,用Close方法關閉打開的文本文件。如果要讀取一個存在的文本文件的內容,就要用到 TextStream 對象的 Read、 ReadLine 或ReadAll方法;這些方法的區別是 Read:從一個文件中讀取指定數量的字元;ReadLine:讀取一整行(緊跟,但不包括,換行符); ReadAll :讀取一個文本文件的所有內容。下面在一個VB的工程中演示上述的效果。
在VB中新建一個工程,然後在Form1上添加兩個命令按鈕,然後輸入以下代碼:
Private Sub CmdRead_Click()
Dim fsoTest As New FileSystemObject,file1 As File,ts As TextStream,s As String
Set file1 = fsoTest.GetFile(“C:\testfile.txt")
Set ts = file1.OpenAsTextStream(ForReading)
'讀取一行
s = ts.ReadLine
MsgBox s
ts.Close
End Sub
Private Sub CmdWrite_Click()
Dim txtfile As File,ts As TextStream
Set txtfile = fsoTest.GetFile(“c:\testfile.txt")
Set ts = txtfile.OpenAsTextStream(ForWriting)
'使用Write方法寫入一行。
ts.Write (“This is only a Test")
' 寫入一行帶有換行符的文本。
ts.WriteLine (“Testing 1,2,3.")
' 向文件中寫入三個換行符。
ts.WriteBlankLines ⑶
ts.Close
End Sub
在這裡我們假設已經在磁碟上建立了一個名為testfile.txt的文件。在按下F5運行時,先單擊Write寫入數據,然後按下Read讀取數據。
File System Object 在VBscript 里的應用
在代碼內操作文本文件、文件夾及驅動器。它是腳本運行期庫提供的對象之一,對於伺服器ASP頁面內的VBScript和JScript都有效。如果頁面的擴展名為.hta(表示它們是HTA的一部分),它也可用在客戶端的IE 5中。本節僅討論在伺服器上的ASP腳本如何使用FileSystemObject對象。
超級文本應用程序(HTA)由指定的"受信任的"頁面組成,在頁面的;段里包含;元素。例如:
這些頁面可以使用客戶端腳本引擎中的一些不常用特性,這些特性中有FileSystemObject對象和TextStream對象。關於超級文本應用程序的更多信息,請訪問Microsoft Workshop網站。
可以使用下面的程序創建一個FileSystemObject對象實例:
' In VBScript:
Dim objMyFSO
Set objMyFSO = Server.CreateObject("Scripting.FileSystemObject")
// In JScript:
var objMyFSO = Server.CreateObject('Scripting.FileSystemObject');
目錄