FileSystemObject 的例子(處理驅動器、資料夾、檔案) (轉)

worldblog發表於2007-12-12
FileSystemObject 的例子(處理驅動器、資料夾、檔案) (轉)[@more@]

處理器和夾

使用 FileSystem () ,可以有計劃地處理驅動器和資料夾,就像在 中互動式地處理它們一樣。可以複製和移動資料夾,獲取有關驅動器和資料夾的資訊,等等。

獲取有關驅動器的資訊
可以用 Drive 物件來獲得有關各種驅動器的資訊,這些驅動器是實物地或透過連線到上的。它的屬性可以用來獲得下面的資訊內容:

  • 驅動器的總容量,以位元組為單位(TotalSize 屬性)
  • 驅動器的可用空間是多少,以位元組為單位(AvailableSpaceFreeSpace 屬性)
  • 哪個號被賦給了該驅動器(DriveLetter 屬性)
  • 驅動器的型別是什麼,如可移動的、固定的、網路的、CD-ROM 或 RAM (DriveType 屬性)
  • 驅動器的序列號(SerialNumber 屬性)
  • 驅動器使用的檔案系統型別,如 、FAT32、NTFS 等等(FileSystem 屬性)
  • 驅動器是否可以使用(IsReady 屬性)
  • 共享和/或卷的名字(ShareNameVolumeName 屬性)
  • 驅動器的路徑或根資料夾(PathFolder 屬性)
請考察5.CHM::/htm/sgFSOSample.htm#DriveInfo">示例程式碼,來領會如何在 FileSystemObject 中使用這些屬性。

Drive 物件的用法示例
使用 Drive 物件來收集有關驅動器的資訊。在下面的程式碼中,沒有對實際的 Drive 物件的引用;相反,使用 GetDrive 方法來獲得現有 Drive 物件的引用(在這個例子中就是 drv)。

下面示例示範瞭如何在 中使用 Drive 物件:

Sub ShowDriveInfo(drvPath) Dim fso, drv, s Set fso = CreateObject("Scripting.FileSystemObject") Set drv = fso.GetDrive(fso.GetDriveName(drvPath)) s = "Drive " & UCase(drvPath) & " - " s = s & drv.VolumeName & "
" s = s & "Total Space: " & FormatNumber(drv.TotalSize / 1024, 0) s = s & " Kb" & "
" s = s & "Free Space: " & FormatNumber(drv.FreeSpace / 1024, 0) s = s & " Kb" & "
" Response.Write s End Sub

下面的程式碼說明在 JScript 中實現同樣的功能:

function ShowDriveInfo1(drvPath) { var fso, drv, s =""; fso = new Object("Scripting.FileSystemObject"); drv = fso.GetDrive(fso.GetDriveName(drvPath)); s += "Drive " + drvPath.toUpperCase()+ " - "; s += drv.VolumeName + "
"; s += "Total Space: " + drv.TotalSize / 1024; s += " Kb" + "
"; s += "Free Space: " + drv.FreeSpace / 1024; s += " Kb" + "
"; Response.Write(s); }

處理資料夾
在下面的表中,描述了普通的資料夾任務和它們的方法。

任務 方法 建立資料夾。 FileSystemObject.CreateFolder 刪除資料夾。 Folder.DeleteFileSystemObject.DeleteFolder 移動資料夾。 Folder.MoveFileSystemObject.MoveFolder 複製資料夾。 Folder.CopyFileSystemObject.CopyFolder 檢索資料夾的名字。 Folder.Name 如果資料夾在驅動器上存在,則找出它。 FileSystemObject.FolderExists 獲得現有 Folder 物件的例項。 FileSystemObject.GetFolder 找出資料夾的父資料夾名。 FileSystemObject.GetParentFolderName 找出系統資料夾的路徑。 FileSystemObject.GetSpecialFolder

請考察,來看看在 FileSystemObject 中使用了多少種這些的方法和屬性。

下面的示例示範瞭如何在 VBScript 中使用 FolderFileSystemObject 物件,來操作資料夾和獲得有關它們的資訊:

Sub ShowFolderInfo() Dim fso, fldr, s ' 獲得 FileSystemObject 的例項。 Set fso = CreateObject("Scripting.FileSystemObject") ' 獲得 Drive 物件。 Set fldr = fso.GetFolder("c:") ' 列印父資料夾名字。 Response.Write "Parent folder name is: " & fldr & "
" ' 列印驅動器名字。 Response.Write "Contained on drive " & fldr.Drive & "
" ' 列印根檔名。 If fldr.IsRootFolder = True Then Response.Write "This is the root folder." & ""
"
" Else Response.Write "This folder isn't a root folder." & "

" End If ' 用 FileSystemObject 物件建立新的資料夾。 fso.CreateFolder ("C:Bogus") Response.Write "Created folder C:Bogus" & "
" ' 列印資料夾的基本名字。 Response.Write "Basename = " & fso.GetBaseName("c:bogus") & "
" ' 刪除新建立的資料夾。 fso.DeleteFolder ("C:Bogus") Response.Write "Deleted folder C:Bogus" & "
" End Sub

下面的示例顯示如何在 JScript 中使用 FolderFileSystemObject 物件:

function ShowFolderInfo() { var fso, fldr, s = ""; // 獲得 FileSystemObject 的例項。 fso = new ActiveXObject("Scripting.FileSystemObject"); // 獲得 Drive 物件。 fldr = fso.GetFolder("c:"); // 列印父資料夾名。 Response.Write("Parent folder name is: " + fldr + "
"); // 列印驅動器名字。 Response.Write("Contained on drive " + fldr.Drive + "
"); // 列印根檔名。 if (fldr.IsRootFolder) Response.Write("This is the root folder."); else Response.Write("This folder isn't a root folder."); Response.Write("

"); // 用 FileSystemObject 物件建立新的資料夾。 fso.CreateFolder ("C:Bogus"); Response.Write("Created folder C:Bogus" + "
"); // 列印資料夾的基本名。 Response.Write("Basename = " + fso.GetBaseName("c:bogus") + "
"); // 刪除新建立的資料夾。 fso.DeleteFolder ("C:Bogus"); Response.Write("Deleted folder C:Bogus" + "
"); }


 




處理檔案


有兩種主要的型別:

  • 建立、新增或刪除資料,以及讀取檔案
  • 移動、複製和刪除檔案
建立檔案
建立空文字檔案(有時被叫做“文字流”)有三種方法。

第一種方法是用 CreateTextFile 方法。 下面的示例示範了在 VBScript 中如何用這種方法來建立文字檔案:

Dim fso, f1 Set fso = CreateObject("Scripting.FileSystemObject") Set f1 = fso.CreateTextFile("c:testfile.txt", True)

要在 JScript 中用這種方法,則使用下面的程式碼:

var fso, f1; fso = new ActiveXObject("Scripting.FileSystemObject"); f1 = fso.CreateTextFile("c:testfile.txt", true);

請考察,來領會如何在 FileSystemObject 中使用 CreateTextFile 方法。

建立文字檔案的第二種方法是,使用 FileSystemObject 物件的 OpenTextFile 方法,並設定 ForWriting 標誌。在 VBScript 中,程式碼就像下面的示例一樣:

Dim fso, ts Const ForWriting = 2 Set fso = CreateObject("Scripting. FileSystemObject") Set ts = fso.OpenTextFile("c:test.txt", ForWriting, True)

要在 JScript 中使用這種方法來建立文字檔案,則使用下面的程式碼:

var fso, ts; var ForWriting= 2; fso = new ActiveXObject("Scripting.FileSystemObject"); ts = fso.OpenTextFile("c:test.txt", ForWriting, true);

建立文字檔案的第三種方法是,使用 OpenAsTextStream 方法,並設定 ForWriting 標誌。要使用這種方法,在 VBScript 中使用下面的程式碼:

Dim fso, f1, ts Const ForWriting = 2 Set fso = CreateObject("Scripting.FileSystemObject") fso.CreateTextFile ("c:test1.txt") Set f1 = fso.GetFile("c:test1.txt") Set ts = f1.OpenAsTextStream(ForWriting, True)

在 JScript 中,則使用下面示例中的程式碼:

var fso, f1, ts; var ForWriting = 2; fso = new ActiveXObject("Scripting.FileSystemObject"); fso.CreateTextFile ("c:test1.txt"); f1 = fso.GetFile("c:test1.txt"); ts = f1.OpenAsTextStream(ForWriting, true);

新增資料到檔案中
一旦建立了文字檔案,使用下面的三個步驟向檔案新增資料:

  1. 開啟文字檔案。
  2. 寫入資料。
  3. 關閉檔案。
要開啟現有的檔案,則使用 FileSystemObject 物件的 OpenTextFile 方法或 File 物件的 OpenAsTextStream 方法。

要寫資料到開啟的文字檔案,則根據下表所述任務使用 TextStream 物件的 WriteWriteLineWriteBlankLines 方法。

任務方法向開啟的文字檔案寫資料,不用後續一個新行字元。Write向開啟的文字檔案寫資料,後續一個新行字元。WriteLine向開啟的文字檔案寫一個或多個空白行。WriteBlankLines

請考察,來領會如何在 FileSystemObject 物件中使用 WriteWriteLineWriteBlankLines 方法。

要關閉一個開啟的檔案,則使用 TextStream 物件的 Close 方法。

請考察,來領會如何在 FileSystemObject 中使用 Close 方法。


注意 新行字元包含一個或幾個字元(取決於),以把游標移動到下一行的開始位置(回車/換行)。注意某些字串末尾可能已經有這個非列印字元了。

下面的 VBScript 例子示範瞭如何開啟檔案,和同時使用三種寫方法來向檔案新增資料,然後關閉檔案:

Sub CreateFile() Dim fso, tf Set fso = CreateObject("Scripting.FileSystemObject") Set tf = fso.CreateTextFile("c:testfile.txt", True) ' 寫一行,並且帶有新行字元。 tf.WriteLine("Testing 1, 2, 3.") ' 向檔案寫三個新行字元。 tf.WriteBlankLines(3) ' 寫一行。 tf.Write ("This is a test.") tf.Close End Sub

這個示例示範了在 JScript 中如何使用這三個方法:

function CreateFile() { var fso, tf; fso = new ActiveXObject("Scripting.FileSystemObject"); tf = fso.CreateTextFile("c:testfile.txt", true); // 寫一行,並且帶有新行字元。 tf.WriteLine("Testing 1, 2, 3.") ; // 向檔案寫三個新行字元。 tf.WriteBlankLines(3) ; // 寫一行。 tf.Write ("This is a test."); tf.Close(); }

讀取檔案
要從文字檔案讀取資料,則使用 TextStream 物件的 ReadReadLineReadAll 方法。下表描述了不同的任務應使用哪種方法。

任務方法從檔案讀取指定數量的字元。Read讀取一整行(一直到但不包括新行字元)。ReadLine讀取文字檔案的整個內容。ReadAll

請考察,來領會如何在 FileSystemObject 中使用 ReadAllReadLine 方法。

如果使用 ReadReadLine 方法,並且想跳過資料的特殊部分,則使用 SkipSkipLine 方法。read 方法的結果文字存在一個字串中,該字串可以顯示在一箇中,也可以用字串(如 LeftRightMid)來分析,連線等等。

下面的 VBScript 示例示範瞭如何開啟檔案,和如何寫資料到檔案中並從檔案讀取資料:

Sub ReadFiles Dim fso, f1, ts, s Const ForReading = 1 Set fso = CreateObject("Scripting.FileSystemObject") Set f1 = fso.CreateTextFile("c:testfile.txt", True) ' 寫一行。 Response.Write "Writing file
" f1.WriteLine "Hello World" f1.WriteBlankLines(1) f1.Close ' 讀取檔案的內容。 Response.Write "Reading file
" Set ts = fso.OpenTextFile("c:testfile.txt", ForReading) s = ts.ReadLine Response.Write "File contents = '" & s & "'" ts.Close End Sub

下面的程式碼示範了在 JScript 中做同樣的事:

function ReadFiles() { var fso, f1, ts, s; var ForReading = 1; fso = new ActiveXObject("Scripting.FileSystemObject"); f1 = fso.CreateTextFile("c:testfile.txt", true); // 寫一行。 Response.Write("Writing file
"); f1.WriteLine("Hello World"); f1.WriteBlankLines(1); f1.Close(); // 讀取檔案的內容。 Response.Write("Reading file
"); ts = fso.OpenTextFile("c:testfile.txt", ForReading); s = ts.ReadLine(); Response.Write("File contents = '" + s + "'"); ts.Close(); }

移動、複製和刪除檔案
FSO 物件模式各有兩種方法移動、複製和刪除檔案,如下表所述。

任務方法移動檔案File.MoveFileSystemObject.MoveFile複製檔案File.CopyFileSystemObject.CopyFile刪除檔案File.DeleteFileSystemObject.DeleteFile

請考察,來領會在 FileSystemObject 中刪除檔案的兩種方法。

下面的 VBScript 示例,在驅動器 C 的根目錄中建立一個文字檔案,向其中寫一些資訊,然後把它移動到 tmp 目錄中,並在 temp 中做一個,最後把它們從兩個目錄中刪掉。

要執行下面的示例,需要先在驅動器 C 的根目錄中建立 tmp 和 temp 目錄:

Sub ManipFiles Dim fso, f1, f2, s Set fso = CreateObject("Scripting.FileSystemObject") Set f1 = fso.CreateTextFile("c:testfile.txt", True) Response.Write "Writing file
" ' 寫一行。 f1.Write ("This is a test.") ' 關閉檔案。 f1.Close Response.Write "Moving file to c:tmp
" ' 獲取 C 的根目錄(C:)中的檔案的控制程式碼。 Set f2 = fso.GetFile("c:testfile.txt") ' 把檔案移動到 tmp 目錄。 f2.Move ("c:tmptestfile.txt") Response.Write "Copying file to c:temp
" ' 把檔案複製到 temp 目錄。 f2.Copy ("c:temptestfile.txt") Response.Write "Deleting files
" ' 獲得檔案當前位置的控制程式碼。 Set f2 = fso.GetFile("c:tmptestfile.txt") Set f3 = fso.GetFile("c:temptestfile.txt") ' 刪除檔案。 f2.Delete f3.Delete Response.Write "All done!" End Sub

下面的程式碼示範了在 JScript 中做同樣的事:

function ManipFiles() { var fso, f1, f2, s; fso = new ActiveXObject("Scripting.FileSystemObject"); f1 = fso.CreateTextFile("c:testfile.txt", true); Response.Write("Writing file
"); // 寫一行。 f1.Write("This is a test."); // 關閉檔案。 f1.Close(); Response.Write("Moving file to c:tmp
"); // 獲取 C 的根目錄(C:)中的檔案的控制程式碼。 f2 = fso.GetFile("c:testfile.txt"); // 把檔案移動到 tmp 目錄。 f2.Move ("c:tmptestfile.txt"); Response.Write("Copying file to c:temp
"); // 把檔案複製到 temp 目錄。 f2.Copy ("c:temptestfile.txt"); Response.Write("Deleting files
"); // 獲得檔案當前位置的控制程式碼。 f2 = fso.GetFile("c:tmptestfile.txt"); f3 = fso.GetFile("c:temptestfile.txt"); // 刪除檔案。 f2.Delete(); f3.Delete(); Response.Write("All done!"); }


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-992188/,如需轉載,請註明出處,否則將追究法律責任。

相關文章