VBS中FileSystemObject對象詳解

下面是轉摘的關於FileSystemObject的詳細介紹,TextStream是其中的一個子對象。

前言

最近一直在學VBScript,網上相關的教程也有很多,但大多數的對象都放在ASP中講解,對於沒有學過ASP的同學來說就非常鬱悶了。所以打算把在學習FileSystemObject及TextStream中所常用的屬性和方法寫出來供大家來學習,如有不妥的地方請予以指出。

備註:所有的腳本均在QTP 9.0測試過。

FileSystemObject對象概述

       FileSystemObject 對象的作用:提供對計算機文件系統的訪問,它允許我們在代碼內操作文本文件、文件夾及驅動器。FileSystemObject 對象提供一個屬性和一系列方法,可用它們來操縱 FileSystemObject 對象實現的一些從屬對象。這裏提供了全部的內容概要,然後介紹每一個從屬對象。

    一、FileSystemObject 對象的屬性

FileSystemObject 對象只有一個屬性,它用於得到當前機器上的所有有效驅動器的列表,如表1所示:

1 FileSystemObject 對象的屬性和說明

屬性

說明

Drivers

返回本地計算機可用的驅動器列表

如下腳本就可以獲得FileSystemObjectDrivers屬性

Set objFSO = CreateObject ("Scripting.FileSystemObject")

Set colDrivers = objFSO.Drivers

 

正如已經看到的,FileSystemObject 對象包含一個屬性——Drives,它返回一個包括本地計算機上所有可用驅動器的集合。

Drives 集合裏的每個條目是一個 Drive 對象。Drive 對象的屬性如表2所示:

2 Drive 對象的屬性及說明

方法

說明

AvailableSpave

考慮了帳戶定額和/或其他限制,返回驅動器上對於該用戶可用的空間的大小

DriveLetter

返回驅動器的字母

DriveType

返回驅動器的類型。返回值可以是 Unknown(0)Removeable(1)Fixed(2)Network(3)CDRom(4)  RamDisk(5)。然而需要注意的是當前版本的 scrrun.dll 不支持預定義常數 Network,必須使用十進制 3 來代替

FileSystem

返回驅動器文件系統的類型。返回值包括“FAT”“NTFS”“CDFS”

FreeSpace

返回驅動器上可用剩餘空間的總量

IsReady

返回一個布爾值表明驅動器是否已準備好

Path

返回一個由驅動器字母和冒號組成的驅動器路徑,即“C:”

RootFolder

返回代表的驅動器根目錄文件夾的 Folder 對象

SerialNumber

返回一個用於識別磁盤卷的十進制的序列號

ShareName

如果是一個網絡驅動器,返回該驅動器的網絡共享名

TotalSize

返回驅動器的總容量(以字節爲單位)

VolumeName

設定或返回本地驅動器卷名

因此,通過使用 Drives 集合裏的 Drive 對象,可以在服務器上產生一個驅動器列表,與通過檢查每個可能的驅動器字母來判別驅動器是否存在的方法相比,效率更高。我們也可以得到關於該驅動器的信息。

示例:

創建FileSystemObject對象

Set objFSO = CreateObject("Scripting.FileSystemObject")

創建Drives集合,並賦值給colDrives

Set colDrives = objFSO.Drives

遍歷Drives集合

For Each objDrive in colDrives

'判斷驅動器是否已準備好

       If objDrive.IsReady Then

               msg = "驅動器的名稱爲:" & objDrive.DriveLetter & "   "

            msg =msg & "驅動器文件系統的類型:" & objDrive.FileSystem &"  "

               msg = msg & "驅動器的總容量:" & int(objDrive.TotalSize/(1024*1024*1024)) & "G "

               msg = msg & "剩餘空間的總量:" & int(objDrive.FreeSpace/(1024*1024*1024)) & "G  "

       End If

Next

reporter.ReportEvent  micDone ,"遍歷Drives集合",msg

備註:在系統上運行這段程序以前有一點要注意。如果在 A 驅動器裏沒有磁盤,或 CD-ROM 驅動器裏沒有光盤,將得到一個錯誤提示:“Disk Not Ready”。除了 DriveLetter 屬性和 DriveType 屬性外,在使用其他屬性和方法前,通過檢查每個驅動器的 IsReady 屬性,可以保護該頁面。

    二、FileSystemObject 對象的方法

1. 與驅動器有關的方法

與驅動器有關的方法及說明

方法

說明

DriveExists(drivespec)

如果在 drivespec 中指定的驅動器存在,則返回 True,否則返回 Falsedrivespec 參數可以是一個驅動器字母,或者是文件、文件夾的完整絕對路徑

GetDrive(drivespec)

返回 drivespec 指定的驅動器所對應的Drive對象。drivespec 可以包含冒號、路徑分隔符或者是網絡共享名,即:“C”“C:”“C:”“/machinesharename”

GetDriveName(drivespec)

用字符串返回 drivespec 指定的驅動器的名稱。drivespec 參數必須是文件或文件夾的絕對路徑,或者僅僅是驅動器字母,例如:“c:”“c”

      DriveExists的使用

方法名:DriveExists(drivespec)

       說明:如果在 drivespec 中指定的驅動器存在,則返回 True,否則返回 False。drivespec 參數可以是一個驅動器字母,或者是文件、文件夾的完整絕對路徑

       示例:

' 創建FileSystemObject對象

       Set objFSO = CreateObject ("Scripting.FileSystemObject")

For intCode = 65 To 90 'ANSI codes for 'A' to 'Z'

         strLetter = Chr(intCode) 'Chr:返回與指定的 ANSI 字符代碼相對應的字符。

           If objFSO.DriveExists(strLetter) Then '判斷相應的盤符是否存在,如存在輸出

                 Reporter.ReportEvent micDone,"Show Drive”,” Found drive " & strLetter

           End If

Next

另外,如果已知要訪問的驅動器、文件夾或文件。可以直接對其使用 GetDrive、GetFolder、GetSpecialFolder 和 GetFile 方法。

2. 與文件夾有關的方法及屬性

FileSystemObject對象來操作文件夾的方法:

與文件夾有關的方法及說明

方法

說明

BuildPath(path,name)

在已有的路徑 path 上增添名字爲 name 的文件或文件夾,如果需要,則增添路徑分隔符' '

CopyFolder(source,destination,overwrite)

從指定的源文件夾 source(可以包含通配符)中複製一個或多個文件夾到指定的目標文件夾 destination,包含了源文件夾中的所有文件。如果 source 包含通配符或 destination 末尾是路徑分隔符(‘’),那麼認爲 destination 是要放置源文件夾的拷貝的文件夾。否則的話,認爲 destination 是要創建的新文件夾的路徑名。如果 destination 文件夾已經存在且 overwrite 參數設置爲 False,將產生錯誤,缺省的 overwrite 參數是True

CreateFolder(foldername)

創建一個路徑名爲 foldername 的文件夾。如果 foldername 已經存在將產生錯誤

DeleteFolder(folderspec,force)

刪除由 folderspec 指定的一個或多個文件夾(可以在路徑的最後部分包含通過配符)及文件夾中的所有內容。如果可選的 force 參數設置爲 true,那麼即使文件夾包含的文件具有隻讀屬性,也將刪除該文件夾。缺省的 force 參數是 False

FolderExists(folderspec)

如果 folderspec 指定的文件夾存在則返回 True,否則返回 Falsefolderspec 參數可以包含文件夾的絕對或相對路徑,或者僅僅是當前文件夾中看到的文件夾名

GetAbsolutePathName(pathspec)

返回明確指定文件夾的路徑,其中要考慮到當前文件夾的路徑。例如,如果當前文件夾是“c:docssales”,而pathspec“jan”,返回的字符是“c:docssalesjan”。通配符、”..””/”路徑操作符都是可以接受的

GetFolder(folderspec)

返回 folderspec 指定的文件夾對應的 Folder 對象。folderspec 可以是文件夾的相對的或絕對的路徑

GetParentFolderName(pathspec)

返回pathspec 文件或文件夾的上一級文件夾。不檢驗該文件夾是否存在

GetSpecialfolder(folderspec)

返回一個特定的 Windows 文件夾相對應的 Folder 對象。參數 folderspec 的允許值是WindowsFolder(0)SystemFolder(1)  TemporaryFolder(2)

MoveFolder(source,destination)

 source 指定的一個或多個文件夾移動到 destination 指定的文件夾。在 source 裏可以包含通配符,但在 destination 中不行。如果 source 包含通配符或 destination 末尾是路徑分隔符(‘’),則認爲 destination 是要放置源文件夾的文件夾,否則認爲它是一個新文件夾的完整路徑和名字。如果目的文件夾 destination 已經存在則產生錯誤

CopyFolder的使用

方法名:CopyFolder(source,destination,overwrite)

說明:將文件夾從某位置遞歸複製到另一位置。詳細說明請查看錶4。

示例:

創建FileSystemObject對象

Set objfso = createobject("scripting.FileSystemObject")

D:/test下所有的內容複製到c:/123

objfso.CopyFolder "D:/test","c:/123"

注:如果c:/123不存在,則QTP將自動創建它

CreateFolder及DeleteFolder的使用

方法名:CreateFolder(foldername)/DeleteFolder(folderspec,force)

說明:創建/刪除一個路徑名爲 foldername 的文件夾。詳細說明請查看錶4。

示例:

創建FileSystemObject對象

Set objfso = createobject("scripting.FileSystemObject")

‘ c:/創建new folder文件夾,如果文件夾存在,則會出現錯誤提示

objfso.CreateFolder("c:/new folder")

‘ 刪除c:/new folder文件夾

objfso.DeleteFolder("c:/new folder")

注:DeleteFolder無論文件夾是否包含內容,都將刪除該文件夾

FolderExists的使用

方法名:FolderExist(folderspec)

說明:如果指定的文件夾存在,則返回 True;否則返回 False。詳細說明請查看錶4。

示例:

Function hanshu(strpath)

       Dim objfso,objset

       ‘ 創建FileSystemObjec對象

       Set objfso = CreateObject("Scripting.FileSystemObject")

       ‘ 判斷在指定的路徑中是否有

       If Not objfso.FolderExists(strpath) Then

               objset = objfso.CreateFolder(strpath)

       else

               objset = objfso.DeleteFolder(strpath)

       End If

       hanshu = objset

End Function

 

hanshu("c:/new folder")

GetAbsolutePathName的使用

方法名:GetAbsolutePathName(pathspec)

說明:從提供的指定路徑中返回完整且含義明確的路徑。詳細說明請查看錶4。

示例:

Dim objfso

創建FileSystemObject對象

Set objfso = createobject("Scripting.FileSystemObject")

返回當前的目錄,下面兩條語句返回一樣的結果

msgbox (objfso.GetAbsolutePathName(""))

msgbox (objfso.GetAbsolutePathName("C:"))

GetFolder的使用

方法名:GetFolder(folderspec)

說明:返回與指定的路徑中某文件夾相應的 Folder 對象。可以根據所返回的Folder 對象,再去訪問該Folder 對象所持有的屬性。

示例:

Dim objfso,objset

'創建FileSystemObject對象

Set objfso = createobject("Scripting.FileSystemObject")

'返回C:/testingFolder的對象

Set objset = objfso.GetFolder("C:/testing")

根據所返回的Folder對象,去訪問其相關的屬性

reporter.ReportEvent micDone ,"Folder對象的相關屬性","文件夾創建的日期:" & objset.DateCreated &"; 文件夾所在的驅動:" & objset.Drive & "; 文件夾的名字:" & objset.Name

注:關於Folder對象的屬性,將在下面會詳細介紹

GetParentFolderName的使用

方法名:GetParentFolderName(pathspec)

說明:返回字符串,該字符串包含指定的路徑中最後一個文件或文件夾的父文件夾。

示例:

Dim objfso

'創建FileSystemObject對象

Set objfso = createobject("Scripting.filesystemobject")

'使用GetParentFolderName方法來返回上一層文件夾

msgbox (objfso.GetParentFolderName("C:/WINDOWS/addins"))

GetSpecialFolder的使用

方法名:GetSpecialFolder(folderspec)

說明:返回指定的特殊文件夾。詳細說明請查看錶4。

示例:

Dim fso,tempName

Set fso = CreateObject("Scripting.FileSystemObject")

'GetSpecialFolder()中的參數2,返回一個名爲Temp的臨時文件夾

Set tempName = fso.GetSpecialFolder(2)

msgbox tempName

MoveFolder的使用

方法名:MoveFolder(source,destination)

說明:將一個或多個文件夾從某位置移動到另一位置。詳細說明請查看錶4。

示例:

Dim sourcepath,destination

sourcepath = "C:/testing"

destination = "C:/123"

'調用MoveFolders方法

call MoveFolders(sourcepath,destination)

 

Sub MoveFolders(sourcepath,destination)

   Dim fso

       '創建FileSystemObject對象

   Set fso = CreateObject("Scripting.FileSystemObject")

       '使用MoveFolder方法,將testing文件夾的內容移動到123文件夾下

   fso.MoveFolder sourcepath,destination

End Sub

注:如果腳本在運行前文件夾123已存在,則運行是會發生錯誤;在不同的磁盤下MoveFolder方法不能用

       上面提到的Folder方法是基於FileSystemObject 對象的,現在我們來看看基於Folder對象的方法。

Folder對象所提供的方法

Folder 對象提供一組可用於複製、刪除和移動當前文件夾的方法。這些方法的運行方式與 FileSystemObject 對象的CopyFolder、DeleFolder 和 MoveFolder 方法相同,但這些方法不要求 source 參數,因爲源文件就是這個文件夾。

備註:CopyFolderDeleFolder等方法是基於FileSystemObject 對象的;而下面的CopyDelete等方法是基於FileSystemObject對象下的Folder對象,他們實現的功能是類似的。

5 Folder 對象的方法及說明

方法

說明

Copy(destination,overwrite)

將這個文件夾及所有的內容複製到 destination 指定的文件夾。如果 destination 的末尾是路徑分隔符(‘’),那麼認爲 destination 是放置拷貝文件夾的一個文件夾。否則認爲 destination 是要創建的新文件夾的路徑和名字。如果目標文件夾已經存在且 overwrite 參數設置爲 False,將產生錯誤,缺省的 overwrite 參數是 True

Delete(force)

刪除文件夾及裏面的所有內容。如果可選的 force 參數設置爲 True,即使文件夾設置爲只讀或含有隻讀的文件,也將刪除該文件夾。缺省的 force  False

Move(destination)

將文件夾及裏面所有的內容移動到 destination 指定的文件夾。如果 destination 的末尾是路徑分隔符(‘’),那麼認爲 destination 是放置移動文件夾的一個文件夾。否則認爲 destination 是一個新的文件夾的路徑和名字。如果目標文件夾已經存在,則出錯

CreateTextFile(filename,overwrite,unicode)

用指定的文件名在文件夾內創建一個新的文件,並且返回一個相應的TextStream 對象。如果可選的 overwrite參數設置爲True,將覆蓋任何已有的同名文件。缺省的overwrite 參數是 False。如果可選的 unicode 參數設置爲 True,文件的內容將存儲爲 unicode 文本。缺省的 unicode  False

Copy的使用

方法名:Copy(destination,overwrite)

說明:將文件夾的所有內容,複製到destination文件夾中。詳細說明請見表5

示例:

Dim sourcepath

sourcepath = "C:/testing"

Call FolderAttributes(sourcepath)

 

Sub FolderAttributes(sourcepath)

   Dim fso,objset

    Set fso = CreateObject("Scripting.FileSystemObject")

    '使用GetFolder方法來返回Folder對象

    Set objset = fso.getFolder(sourcepath)

    '將testing中的所有內容複製到123文件夾中

    objset.Copy("d:/123")

End Sub

備註:如果目標文件夾不存在,則腳本在運行是將自動創建

Delete的使用

方法名:Delete(force)

說明:刪除文件夾及裏面的所有內容。詳細說明請見表5

示例:

Dim sourcepath

sourcepath = "C:/testing"

Call FolderAttributes(sourcepath)

 

Sub FolderAttributes(sourcepath)

   Dim fso,objset

    Set fso = CreateObject("Scripting.FileSystemObject")

    '使用GetFolder方法來返回Folder對象

    Set objset = fso.getFolder(sourcepath)

    '將testingw文件夾及文件夾裏所有的內容全部刪除

    objset.Delete(True)

End Sub

備註:如果文件夾屬性爲只讀且Delete的參數爲False,則腳本在運行是將提示“沒有權限”;當文件夾不存在時,將提示“路徑未找到”。

Move的使用

方法名:Move(destination)

說明:將文件夾及裏面所有的內容移動到 destination 指定的文件夾。詳細說明請見表5

示例:

Dim sourcepath

sourcepath = "C:/testing"

Call FolderAttributes(sourcepath)

 

Sub FolderAttributes(sourcepath)

   Dim fso,objset

       Set fso = CreateObject("Scripting.FileSystemObject")

       '使用GetFolder方法來返回Folder對象

       Set objset = fso.getFolder(sourcepath)

       '使用Move()testing文件夾及裏面所有的內容,移動到目標文件夾123

       objset.Move("C:/123")

End Sub

備註:如果目標文件夾123已存在,則腳本運行時提示“文件已存在”;如果目標文件夾123D:/,則腳本運行使提示“沒有權限”

CreateTextFile的使用

方法名:CreateTextFile(filename,overwrite,unicode)

說明:創建指定文件並返回 TextStream 對象,該對象可用於讀或寫創建的文件。詳細說明請見表5

示例:

Dim sourcepath

sourcepath = "C:/testing"

Call FolderAttributes(sourcepath)

 

Sub FolderAttributes(sourcepath)

   Dim fso,objset

       Set fso = CreateObject("Scripting.FileSystemObject")

       '使用GetFolder方法來返回Folder對象

       Set objset = fso.getFolder(sourcepath)

'testing文件夾下,使用CreateTextFile()創建myClass2.doc文件

    objset.CreateTextFile "myClass2.doc",true

End Sub

備註:CreateTextFile()所創建的文件類型是根據所提供的擴展名來確定的,如也可以寫成myClass2.txtmyClass.exe等等;FileSystemObject對象也可以調用CreateTextFile(),我們可以將上面的代碼改寫成:

fso.CreateTextFile “C:/testing/myClass.doc”,true

Folder對象所提供的屬性:

6 Folder 對象的屬性及說明

屬性

說明

Attributes

返回文件夾的屬性。可以是下列值中的一個或其組合:Normal(0)ReadOnly(1)Hidden(2)System(4)Volume(名稱)(8)Directory(文件夾)(16)Archive(32)Alias(64)  Compressed(128)。例如,一個隱藏的只讀文件,Attributes 的值爲 3

DateCreated

返回該文件夾的創建日期和時間

DateLastAccessed

返回最後一次訪問該文件夾的日期和時間

DateLastModified

返回最後一次修改該文件夾的日期和時間

Drive

返回該文件夾所在的驅動器的驅動器字母

Files

返回 Folder 對象包含的 Files 集合,表示該文件夾內所有的文件

IsRootFolder

返回一個布爾值說明該文件夾是否是當前驅動器的根文件夾

Name

設定或返回文件夾的名字

ParentFolder

返回該文件夾的父文件夾對應的 Folder 對象

Path

返回文件夾的絕對路徑,使用相應的長文件名

ShortName

返回 DOS 風格的 8.3 形式的文件夾名

ShortPath

返回 DOS 風格的 8.3 形式的文件夾的絕對路徑

Size

返回包含在該文件夾裏所有文件和子文件夾的大小

SubFolers

返回該文件夾內包含的所有子文件夾對應的 Folders 集合,包括隱藏文件夾和系統文件夾

Type

如果可能,返回一個文件夾的說明字符串(例如,“Recycle Bin”

如上面提到的,我們可以使用下面的腳本來訪問Folder對象

Dim objfso,objset

'創建FileSystemObject對象

Set objfso = createobject("Scripting.FileSystemObject")

'返回C:/testingFolder的對象

Set objset = objfso.GetFolder("C:/testing")

注:通過Folder對象我們就可以訪問其提供的方法及屬性

Drive、DateCreated、Name屬性的使用

示例:

Dim sourcepath

sourcepath = "C:/testing"

Call FolderAttributes(sourcepath)

 

Sub FolderAttributes(sourcepath)

   Dim fso,objset

       Set fso = CreateObject("Scripting.FileSystemObject")

       '使用GetFolder方法來返回Folder對象

       Set objset = fso.getFolder(sourcepath)

       '通過Folder對象來訪問Folder屬性

       reporter.ReportEvent micDone ,"測試Folder屬性","文件夾所在的磁盤爲:" & objset.Drive & " 文件夾所創建的日期:" & objset.DateCreated & " 文件夾的名字爲:" & objset.Name

End Sub

SubFolers屬性的使用

示例:

Dim sourcepath

sourcepath = "C:/Program Files/Common Files"

Call FolderAttributes(sourcepath)

 

Sub FolderAttributes(sourcepath)

   Dim fso,objset,objFolders,FolderName,i

   i = 0

       Set fso = CreateObject("Scripting.FileSystemObject")

       '使用GetFolder方法來返回Folder對象

       Set objset = fso.getFolder(sourcepath)

       'SubFolders屬性將返回所有子文件夾對應的Folder集合

       Set objFolders = objset.SubFolders

       '遍歷Folder集合,統計出共有多少個文件夾,及相關文件夾的名字

       For Each objFolder in objFolders

              i = i +1

              'vbcr爲換行符

              FolderName =  FolderName + objFolder.Name + vbcr

       Next

       msgbox ("共有" & i &"個文件夾,文件夾的名字爲:" & FolderName)

End Sub

Files屬性的使用

示例:

Dim objFso,objGetFolder,intCount,strFileName

intCount = 0

'創建FileSystemObject對象

Set objFso= CreateObject("Scripting.FileSystemObject")

'使用GetFolder()獲得文件夾對象

Set objGetFolder = objFso.GetFolder("C:/test")

'遍歷Files集合並顯示文件夾中所有的文件名

For Each strFile in objGetFolder.Files

       intCount = intCount + 1

       strFileName =strFileName &  "第" & intCount & "個文件夾名爲:" & strFile.Name & vbcr

Next

msgbox strFileName

3. 以文件有關的方法及屬性

FileSystemObject對象來操作文件的方法:

與文件有關的方法及說明

方法

說明

CopyFile(source,destination,overwrite)

 source(可包含通配符)指定的一個或多個文件複製到指定的目標文件夾 destination。如果 source 包含通配符或 destination 末尾是路徑分隔符(‘’),那麼認爲 destination 是文件夾。否則認爲 destination 爲一新文件的完全路徑和名稱。如果目標文件夾已經存在且 overwrite 參數設置爲 False,將產生錯誤。缺省的 overwrite 參數是 True

CreateTextFile(filename,overwrite,unicode)

用指定的文件名 filename 在磁盤上創建一個新的文本文件,並返回與其對應的 TextStream 對象,如果可選的 overwrite 參數設置爲 True,則覆蓋同一路徑下已有的同名文件。缺省的 overwrite 參數是 False。如果可選的 unicode 參數設置爲 True,則該文件的內容將存儲爲 Unicode 文本,缺省的 unicode 參數是 False

DeleFile(filespec,force)

刪除由 filespec 指定的一個或多個文件(可以在路徑的最後部分包含通配符)。如果可選的 force 參數設置爲 true,那麼也刪除具有隻讀屬性的文件。缺省的 force 參數是False

FileExists(filespec)

如果 filespec 指定的文件存在則返回 True,否則返回 Falsefilespec 參數可以包含文件的絕對路徑或相對路徑,或者是當前文件夾中的文件名

GetBaseName(filespec)

返回 filespec 指定的文件的名稱,即包含文件路徑但去掉了文件的擴展名

GetExtensionName(filespec)

返回 filespec 指定的文件的擴展名

GetFile(filespec)

返回 filespec 指定的文件所對應的 File 對象。可以指定文件的相對或絕對路徑

GetFileName(pathspec)

返回pathspec 指定的文件的路徑或文件名,如果沒有文件名就返回最後的文件夾名。不檢查該文件或文件夾是否存在

GetTempName()

返回一個隨機產生的文件名,用於完成運算所需的臨時文件或文件夾

MoveFile(source,destination)

 source 指定的一個或多個源文件移動到 destination 指定的目的文件夾。在 source裏可以包含通配符,但 destination 不行。如果 source 包含通過配符或 destination 末尾是路徑分隔符(‘’),那麼認爲 destination 是一文件夾。否則,認爲 destination 是一新文件夾的完整路徑和名稱。如果目的文件夾已經存在則產生錯誤

OpenTextFile(filename,iomode,create,format)

創建一個名叫做 filename 的文件,或打開一個現有的名爲 filename 的文件,並且返回一個與其相關的 TextStream 對象。filename 參數可以包含絕對或相對路徑。iomode 參數指定了所要求的訪問類型。允許的數值是 ForReading(1)(缺省)、ForWriting(2)ForAppending(8)。當寫入或追加到一個不存在的文件時,如果 create 參數設置爲 true,就將創建一個新文件。缺省的 create 參數是 Falseformat 參數說明對文件讀或寫的數據格式。允許數值是:TristatetFalse(0)(缺省),按照 ASCII 格式打開;TristatetTrue(-1),按照 Unicode 格式打開;TristateDefault(-2),用系統缺省格式打開

CopyFile及MoveFile的使用

方法名:CopyFile(source,destination,overwrite)

說明:將一個或多個文件從某位置複製到另一位置。詳細說明請見表7

方法名:MoveFile(source,destination)

說明: source 指定的一個或多個源文件移動到 destination 指定的目的文件夾。

示例:

Dim sourcepath,targetpath

sourcepath = "C:/testing/*.txt"

targetpath = "C:/123/"

Call FolderAttributes(sourcepath,targetpath)

Sub FolderAttributes(sourcepath,targetpath)

   Dim fso

       Set fso = CreateObject("Scripting.FileSystemObject")

'testing文件夾下所有擴展名名爲.txt的文件,複製到123文件夾下

       fso.CopyFile sourcepath,targetpath

       fso.MoveFile sourcepath,targetpath

End Sub

備註:如果C:/123文件夾不存在,則腳本運行時提示“路徑不存在”

CreateTextFile及DeleteFile的使用

方法名:CreateTextFile(filename,overwrite,unicode)

說明:創建指定文件並返回 TextStream 對象,該對象可用於讀或寫創建的文件。

方法名:DeleFile(filespec,force)

說明:刪除指定的文件。詳細說明請見表7.

示例:

Dim sourcepath

sourcepath = "C:/testing/ myClass2.doc "

Call FolderAttributes(sourcepath)

 

Sub FolderAttributes(sourcepath)

   Dim fso

       Set fso = CreateObject("Scripting.FileSystemObject")

'testing文件夾下,使用CreateTextFile()創建myClass2.doc文件

fso.CreateTextFile sourcepath,true

'刪除testing文件夾下,所有擴展名爲.txt的文件

fso.DeleteFile sourcepath,true

End Sub

備註:如果所刪除的文件爲只讀屬性且DeleteFile()的參數爲false的話,則腳本運行是出現“沒有權限”FileExists的使用

方法名:FileExists(filespec)

說明:判斷所指定的文件是否存在。此方法將返回Bool. 詳細說明請見表7.

示例:

Dim sourcepath

sourcepath = "C:/testing/test.txt"

Call FolderAttributes(sourcepath)

 

Sub FolderAttributes(sourcepath)

   Dim fso

       Set fso = CreateObject("Scripting.FileSystemObject")

       '判斷C:/testing/test.txt是否有存在,如果存在返回“true;否則返回“false

       If fso.FileExists(sourcepath) Then

              msgbox "true"

       else

              msgbox "false"

       End If

End Sub

GetBaseName、GetFileName及GetExtensionName的使用

方法名:GetBaseName(filespec)

說明:返回字符串,文件 (不帶擴展名), 或者提供的路徑說明中的文件夾。

方法名:GetExtensionName(filespec)

說明:返回字符串,該字符串包含路徑最後一個組成部分的擴展名。

方法名:GetFileName(pathspec)

說明:返回指定路徑(不是指定驅動器路徑部分)的最後一個文件或文件夾。

示例:

Dim sourcepath

sourcepath = "C:/testing/test.txt"

Call FolderAttributes(sourcepath)

 

Sub FolderAttributes(sourcepath)

   Dim fso

       Set fso = CreateObject("Scripting.FileSystemObject")

       '返回文件名test, 擴展名 txt, 文件名+擴展名 test.txt

         Msgbox (fso.GetBaseName(sourcepath))

         Msgbox (fso. GetExtensionName(sourcepath))

       Msgbox (fso.GetFileName(sourcepath))

End Sub

GetFile的使用

方法名:GetFile(filespec)

說明:返回與指定路徑中某文件相應的 File 對象,既而可以訪問到File的屬性。

示例:

Dim sourcepath

sourcepath = "C:/testing/778899.txt"

Call FolderAttributes(sourcepath)

 

Sub FolderAttributes(sourcepath)

   Dim fso,objFile

       Set fso = CreateObject("Scripting.FileSystemObject")

       '調用GetFile()返回File對象,通過File對象來訪問其下的屬性

       set objFile = fso.GetFile(sourcepath)

       reporter.ReportEvent micDone,"訪問file的屬性","該文件所在的盤符爲:" & objFile.Drive & "              文件名爲:" & objFile.Name

End Sub

注:關於File對象的屬性,將在下面會詳細介紹

GetTempName的使用

方法名:GetTempName()

說明:返回隨機生成的臨時文件或文件夾的名稱,用於執行要求臨時文件或文件夾的操作

示例:

Dim fso, tempfile

'創建FileSystemObject對象

Set fso = CreateObject("Scripting.FileSystemObject")

'調用CreateTempFile函數,並將對象賦值給tempfile

Set tempfile = CreateTempFile

'在臨時文件中寫入字符

tempfile.WriteLine "世界你好"

'關閉對象

tempfile.Close

 

Function CreateTempFile

   Dim tfolder, tname, tfile

   Const TemporaryFolder = 2

   'GetSpecialFolder()中的參數2,返回一個名爲Temp的臨時文件夾

   Set tfolder = fso.GetSpecialFolder(TemporaryFolder)

   '隨機生成一個臨時文件名

   tname = fso.GetTempName 

   'Temp臨時文件夾下面,創建一個臨時文件

   Set tfile = tfolder.CreateTextFile(tname)

   '將結果賦值給函數

   Set CreateTempFile = tfile

End Function

備註:GetTempName 方法不創建文件,該方法僅提供臨時文件名。示例中的的結果,默認保存在C:/Documents and Settings/Administrator/Local Settings/Temp

OpenTextFile的使用

方法名:(filename,iomode,create,format)

說明:打開指定的文件並返回一個 TextStream 對象,可以讀取、寫入此對象或將其追加到文件。詳細的說明見表7.

示例:

Dim spec

spec = "C:/testing.txt"

'三個參數的分別爲:以只讀模式打開文件、以只寫方式打開文件、打開文件並在文件末尾進行寫操作

Const intForReading = 1,intForWriting = 2,intForAppending = 8

'調用OpenTextFileTest()

Call OpenTextFileTest(spec,intForAppending)

 

Sub OpenTextFileTest(sepc,intForAppending)

   Dim fso,objTStream

   '創建FileSystemObject對象

   Set fso = CreateObject("Scripting.FileSystemObject")

   '參數true表示:如果文件不存在,則創建文件。最後OpenTextFile()將返回TextStream對象

   Set objTStream = fso.OpenTextFile(sepc,intForAppending,true)

   '利用TextStream對象來將字符串寫入文件

   objTStream.write "hello word!"

   '釋放TextStream對象

   objTStream.close

End Sub

File對象所提供的屬性

8 File 對象的屬性及說明

屬性

說明

Attributes

返回文件的屬性。可以是下列值中的一個或其組合:Normal(0)ReadOnly(1)Hidden(2)System(4)Volume(名稱)(9)Directory(文件夾)(16)Archive(32)Alias(64)  Compressed(128)

DateCreated

返回該文件夾的創建日期和時間

DateLastAccessed

返回最後一次訪問該文件的日期和時間

DateLastModified

返回最後一次修改該文件的日期和時間

Drive

返回該文件所在的驅動器的 Drive 對象

Name

設定或返回文件的名字

ParentFolder

返回該文件的父文件夾的 Folder 對象

Path

返回文件的絕對路徑,可使用長文件名

ShortName

返回 DOS 風格的 8.3 形式的文件名

ShortPath

返回 DOS 風格的 8.3 形式的文件絕對路徑

Size

返回該文件的大小(字節)

Type

如果可能,返回一個文件類型的說明字符串(例如:“Text Document”表示 .txt 文件)

       我們在前面File對象的方法中曾提到,可以使用FileSystemObject對象的GetFile()來訪問File對象屬性。

       訪問File對象屬性的示例如下:

Dim sourcepath

sourcepath = "C:/testing/778899.txt"

Call FolderAttributes(sourcepath)

 

Sub FolderAttributes(sourcepath)

   Dim fso,objFile

       Set fso = CreateObject("Scripting.FileSystemObject")

       '調用GetFile()返回File對象,通過File對象來訪問其下的屬性

       set objFile = fso.GetFile(sourcepath)

       reporter.ReportEvent micDone,"訪問file的屬性","該文件所在的盤符爲:" & objFile.Drive & "              文件名爲:" & objFile.Name

End Sub

備註:File對象屬性的使用方法和前面介紹的Folder對象屬性的使用方法一樣,所以在這不一一列出。

TextStream對象概述

       TextStream對象是用於訪問文本文件的對象,它是FileSystemObject一個獨立的附屬對象,但在使用TextStream對象時,我們仍要藉助FileSystemObject 對象或其附屬對象來創建一個 TextStream 對象並訪問磁盤文件的內容。可以通過FileSystemObject 對象的CreateTextFile()OpenTextFile(),來獲取TextStream的對象句柄。

下面我們來具體的看看TextStream 對象的方法及屬性的使用。

一、TextStream對象的方法

9  TextStream 對象的方法及說明

方法

說明

Close()

關閉一個打開的文件

Read(numchars)

從文件中讀出 numchars 個字符

ReadAll()

作爲單個字符串讀出整個文件

ReadLine()

作爲一個字符串從文件中讀出一行(直到回車符和換行)

Skip(numchars)

當從文件讀出時忽略 numchars 個字符

SkipLine()

當從文件讀出時忽略下一行

Write(string)

向文件寫入字符串 string

WriteLine(string)

向文件寫入字符串 string(可選)和換行符

WriteBlankLines(n)

向文件寫入 n 個換行符

Close、Write、WriteLine及WriteBlankLines的使用

方法名:Close()

說明:關閉正在打開的文件

方法名:WriteLine(string)

說明:向文件寫入字符串 string(可選)和換行符。

示例:

Dim strPath,strText

strPath = "C:/testing.txt"

strText = "This is Test !" & vbCrLf & “hello word !”

'調用函數

Call CreateFile(strPath,strText)

 

Sub CreateFile(strPath,strText)

       Dim objFso,objStream

       '創建FileSystemObject對象

       Set objFso = CreateObject("Scripting.FileSystemObject")

       '使用FileSystemObject對象的CreateTextFile(),來返回一個TextStream對象句柄

       Set objStream = objFso.CreateTextFile(strPath,True)

       '三個Write的意思分別爲:在文本中寫入字符、寫入帶換行符的字符、寫入3個換行符

         objStream.Write(strText)

       ‘objStream.WriteLine(strText)

       ‘objStream. WriteBlankLines 3

       '關閉TextStream對象

       objStream.Close

End Sub

Read、ReadAll及ReadLine的使用

方法名:Read(numchars)

說明:從 TextStream 文件中讀入指定數目的字符並返回結果字符串。

方法名:ReadAll()

說明:讀入全部 TextStream 文件並返回結果字符串。

方法名:ReadLine()

說明:從 TextStream 文件中讀入一整行字符(直到下一行,但不包括下一行字符),並返回結果字符串。

示例:

Sub CreateFile(strPath,strText)

       Dim objFso,objStream

       '創建FileSystemObject對象

       Set objFso = CreateObject("Scripting.FileSystemObject")

       '使用FileSystemObject對象的CreateTextFile(),來返回一個TextStream對象句柄

       Set objStream = objFso.CreateTextFile(strPath,True)

       '寫入字符

       objStream.WriteLine(strText)

       Set objStream = objFso.OpenTextFile(strPath,1,true)

       msgbox (objStream.ReadLine)

       'msgbox (objStream.ReadAll)

   ' msgbox (objStream.Read(Len(strText)))

         '關閉TextStream對象

       objStream.Close

End Sub

Skip、SkipLine的使用

方法名:Skip(numchars)

說明:讀取 TextStream 文件時跳過指定數目的字符

方法名:SkipLine()

說明:當讀到 TextStream 文件時,跳過下一行。

示例:

Dim strPath,strText

strPath = "C:/testing.txt"

'調用函數

Call CreateFile(strPath)

 

Sub CreateFile(strPath)

       Dim objFso,objStream

       '創建FileSystemObject對象

       Set objFso = CreateObject("Scripting.FileSystemObject")

       '使用FileSystemObject對象的CreateTextFile(),來返回一個TextStream對象句柄

       Set objStream = objFso.CreateTextFile(strPath,True)

       '在文本中寫入字符

       objStream.Write "This is Test !" & vbCrLf & "hello word !"

       '以只讀的方式打開文件

       Set objStream = objFso.OpenTextFile(strPath,1,true)

       '讀取文件時跳過5個字符;或者跳過當前行,讀取下一行

       objStream.Skip(5)

       'objStream.SkipLine

         '讀取文本內容

       msgbox objStream.ReadAll

       '關閉TextStream對象

       objStream.Close

End Sub

備註:兩者的區別是:Skip——跳過指定的幾個字符;SkipLine——跳過一行

二、TextStream對象的屬性

TextStream 的屬性提供有關文件內文件指針當前位置的信息,如表9所示。注意,所有的屬性是隻讀的。

10  TextStream 對象的屬性及說明

屬性

說明

AtEndOfLine

如果文件位置指針在文件中一行的末尾則返回 True

AtEndOfStream

如果文件位置指針在文件的末尾則返回 True

Column

 1 開始返回文件中當前字符的列號

Line

 1 開始返回文件中當前行的行號

AtEndOfLine 和 AtEndOfStream 屬性僅對以 iomode 參數爲 ForReading 的方式打開的文件可用,否則將會出錯。

AtEndOfLine及AtEndOfStream的使用

示例:

Dim strPath,strText

strPath = "C:/testing.txt"

'調用函數

Call CreateFile(strPath)

 

Sub CreateFile(strPath)

       Dim objFso,objStream,str

       '創建FileSystemObject對象

       Set objFso = CreateObject("Scripting.FileSystemObject")

       '以只讀的方式打開文件,如果文件不存在則創建它

       Set objStream = objFso.OpenTextFile(strPath,1,true)

       '如果當前的指針不在行末,則讀取文本內容

       Do While objStream.AtEndOfLine <> true

       ‘Do While objStream.AtEndOfStream <> true

              str = str + objStream.Read(1)

       Loop

       msgbox str

         '關閉TextStream對象

       objStream.Close

End Sub

備註:兩者間的區別是:AtEndOfLine——讀取到當前文本行的末尾;AtEndOfStream——讀取到整個文本的末尾

Column及Line的使用

示例:

Sub TestTextStream(strPath)

   Dim objFso,objTStream,str

       Set objFso = CreateObject("Scripting.FileSystemObject")

       '以只讀的方式打開文件

       Set objTStream = objFso.OpenTextFile(strPath,1)

       '如果當前的指針不在整個文檔的末尾,讀取文本的所有內容

   Do While objTStream.AtEndOfStream <> true

                    objTStream.ReadAll

                 str = str + "共有" & objTStream.Line & "行數據,光標最後所在列號爲:" & objTStream.Column & vbCrLf

   Loop

       '打印信息

print str

End Sub

下面是轉摘的關於FileSystemObject的詳細介紹,TextStream是其中的一個子對象。

前言

最近一直在學VBScript,網上相關的教程也有很多,但大多數的對象都放在ASP中講解,對於沒有學過ASP的同學來說就非常鬱悶了。所以打算把在學習FileSystemObject及TextStream中所常用的屬性和方法寫出來供大家來學習,如有不妥的地方請予以指出。

備註:所有的腳本均在QTP 9.0測試過。

FileSystemObject對象概述

       FileSystemObject 對象的作用:提供對計算機文件系統的訪問,它允許我們在代碼內操作文本文件、文件夾及驅動器。FileSystemObject 對象提供一個屬性和一系列方法,可用它們來操縱 FileSystemObject 對象實現的一些從屬對象。這裏提供了全部的內容概要,然後介紹每一個從屬對象。

    一、FileSystemObject 對象的屬性

FileSystemObject 對象只有一個屬性,它用於得到當前機器上的所有有效驅動器的列表,如表1所示:

1 FileSystemObject 對象的屬性和說明

屬性

說明

Drivers

返回本地計算機可用的驅動器列表

如下腳本就可以獲得FileSystemObjectDrivers屬性

Set objFSO = CreateObject ("Scripting.FileSystemObject")

Set colDrivers = objFSO.Drivers

 

正如已經看到的,FileSystemObject 對象包含一個屬性——Drives,它返回一個包括本地計算機上所有可用驅動器的集合。

Drives 集合裏的每個條目是一個 Drive 對象。Drive 對象的屬性如表2所示:

2 Drive 對象的屬性及說明

方法

說明

AvailableSpave

考慮了帳戶定額和/或其他限制,返回驅動器上對於該用戶可用的空間的大小

DriveLetter

返回驅動器的字母

DriveType

返回驅動器的類型。返回值可以是 Unknown(0)Removeable(1)Fixed(2)Network(3)CDRom(4)  RamDisk(5)。然而需要注意的是當前版本的 scrrun.dll 不支持預定義常數 Network,必須使用十進制 3 來代替

FileSystem

返回驅動器文件系統的類型。返回值包括“FAT”“NTFS”“CDFS”

FreeSpace

返回驅動器上可用剩餘空間的總量

IsReady

返回一個布爾值表明驅動器是否已準備好

Path

返回一個由驅動器字母和冒號組成的驅動器路徑,即“C:”

RootFolder

返回代表的驅動器根目錄文件夾的 Folder 對象

SerialNumber

返回一個用於識別磁盤卷的十進制的序列號

ShareName

如果是一個網絡驅動器,返回該驅動器的網絡共享名

TotalSize

返回驅動器的總容量(以字節爲單位)

VolumeName

設定或返回本地驅動器卷名

因此,通過使用 Drives 集合裏的 Drive 對象,可以在服務器上產生一個驅動器列表,與通過檢查每個可能的驅動器字母來判別驅動器是否存在的方法相比,效率更高。我們也可以得到關於該驅動器的信息。

示例:

創建FileSystemObject對象

Set objFSO = CreateObject("Scripting.FileSystemObject")

創建Drives集合,並賦值給colDrives

Set colDrives = objFSO.Drives

遍歷Drives集合

For Each objDrive in colDrives

'判斷驅動器是否已準備好

       If objDrive.IsReady Then

               msg = "驅動器的名稱爲:" & objDrive.DriveLetter & "   "

            msg =msg & "驅動器文件系統的類型:" & objDrive.FileSystem &"  "

               msg = msg & "驅動器的總容量:" & int(objDrive.TotalSize/(1024*1024*1024)) & "G "

               msg = msg & "剩餘空間的總量:" & int(objDrive.FreeSpace/(1024*1024*1024)) & "G  "

       End If

Next

reporter.ReportEvent  micDone ,"遍歷Drives集合",msg

備註:在系統上運行這段程序以前有一點要注意。如果在 A 驅動器裏沒有磁盤,或 CD-ROM 驅動器裏沒有光盤,將得到一個錯誤提示:“Disk Not Ready”。除了 DriveLetter 屬性和 DriveType 屬性外,在使用其他屬性和方法前,通過檢查每個驅動器的 IsReady 屬性,可以保護該頁面。

    二、FileSystemObject 對象的方法

1. 與驅動器有關的方法

與驅動器有關的方法及說明

方法

說明

DriveExists(drivespec)

如果在 drivespec 中指定的驅動器存在,則返回 True,否則返回 Falsedrivespec 參數可以是一個驅動器字母,或者是文件、文件夾的完整絕對路徑

GetDrive(drivespec)

返回 drivespec 指定的驅動器所對應的Drive對象。drivespec 可以包含冒號、路徑分隔符或者是網絡共享名,即:“C”“C:”“C:”“/machinesharename”

GetDriveName(drivespec)

用字符串返回 drivespec 指定的驅動器的名稱。drivespec 參數必須是文件或文件夾的絕對路徑,或者僅僅是驅動器字母,例如:“c:”“c”

      DriveExists的使用

方法名:DriveExists(drivespec)

       說明:如果在 drivespec 中指定的驅動器存在,則返回 True,否則返回 False。drivespec 參數可以是一個驅動器字母,或者是文件、文件夾的完整絕對路徑

       示例:

' 創建FileSystemObject對象

       Set objFSO = CreateObject ("Scripting.FileSystemObject")

For intCode = 65 To 90 'ANSI codes for 'A' to 'Z'

         strLetter = Chr(intCode) 'Chr:返回與指定的 ANSI 字符代碼相對應的字符。

           If objFSO.DriveExists(strLetter) Then '判斷相應的盤符是否存在,如存在輸出

                 Reporter.ReportEvent micDone,"Show Drive”,” Found drive " & strLetter

           End If

Next

另外,如果已知要訪問的驅動器、文件夾或文件。可以直接對其使用 GetDrive、GetFolder、GetSpecialFolder 和 GetFile 方法。

2. 與文件夾有關的方法及屬性

FileSystemObject對象來操作文件夾的方法:

與文件夾有關的方法及說明

方法

說明

BuildPath(path,name)

在已有的路徑 path 上增添名字爲 name 的文件或文件夾,如果需要,則增添路徑分隔符' '

CopyFolder(source,destination,overwrite)

從指定的源文件夾 source(可以包含通配符)中複製一個或多個文件夾到指定的目標文件夾 destination,包含了源文件夾中的所有文件。如果 source 包含通配符或 destination 末尾是路徑分隔符(‘’),那麼認爲 destination 是要放置源文件夾的拷貝的文件夾。否則的話,認爲 destination 是要創建的新文件夾的路徑名。如果 destination 文件夾已經存在且 overwrite 參數設置爲 False,將產生錯誤,缺省的 overwrite 參數是True

CreateFolder(foldername)

創建一個路徑名爲 foldername 的文件夾。如果 foldername 已經存在將產生錯誤

DeleteFolder(folderspec,force)

刪除由 folderspec 指定的一個或多個文件夾(可以在路徑的最後部分包含通過配符)及文件夾中的所有內容。如果可選的 force 參數設置爲 true,那麼即使文件夾包含的文件具有隻讀屬性,也將刪除該文件夾。缺省的 force 參數是 False

FolderExists(folderspec)

如果 folderspec 指定的文件夾存在則返回 True,否則返回 Falsefolderspec 參數可以包含文件夾的絕對或相對路徑,或者僅僅是當前文件夾中看到的文件夾名

GetAbsolutePathName(pathspec)

返回明確指定文件夾的路徑,其中要考慮到當前文件夾的路徑。例如,如果當前文件夾是“c:docssales”,而pathspec“jan”,返回的字符是“c:docssalesjan”。通配符、”..””/”路徑操作符都是可以接受的

GetFolder(folderspec)

返回 folderspec 指定的文件夾對應的 Folder 對象。folderspec 可以是文件夾的相對的或絕對的路徑

GetParentFolderName(pathspec)

返回pathspec 文件或文件夾的上一級文件夾。不檢驗該文件夾是否存在

GetSpecialfolder(folderspec)

返回一個特定的 Windows 文件夾相對應的 Folder 對象。參數 folderspec 的允許值是WindowsFolder(0)SystemFolder(1)  TemporaryFolder(2)

MoveFolder(source,destination)

 source 指定的一個或多個文件夾移動到 destination 指定的文件夾。在 source 裏可以包含通配符,但在 destination 中不行。如果 source 包含通配符或 destination 末尾是路徑分隔符(‘’),則認爲 destination 是要放置源文件夾的文件夾,否則認爲它是一個新文件夾的完整路徑和名字。如果目的文件夾 destination 已經存在則產生錯誤

CopyFolder的使用

方法名:CopyFolder(source,destination,overwrite)

說明:將文件夾從某位置遞歸複製到另一位置。詳細說明請查看錶4。

示例:

創建FileSystemObject對象

Set objfso = createobject("scripting.FileSystemObject")

D:/test下所有的內容複製到c:/123

objfso.CopyFolder "D:/test","c:/123"

注:如果c:/123不存在,則QTP將自動創建它

CreateFolder及DeleteFolder的使用

方法名:CreateFolder(foldername)/DeleteFolder(folderspec,force)

說明:創建/刪除一個路徑名爲 foldername 的文件夾。詳細說明請查看錶4。

示例:

創建FileSystemObject對象

Set objfso = createobject("scripting.FileSystemObject")

‘ c:/創建new folder文件夾,如果文件夾存在,則會出現錯誤提示

objfso.CreateFolder("c:/new folder")

‘ 刪除c:/new folder文件夾

objfso.DeleteFolder("c:/new folder")

注:DeleteFolder無論文件夾是否包含內容,都將刪除該文件夾

FolderExists的使用

方法名:FolderExist(folderspec)

說明:如果指定的文件夾存在,則返回 True;否則返回 False。詳細說明請查看錶4。

示例:

Function hanshu(strpath)

       Dim objfso,objset

       ‘ 創建FileSystemObjec對象

       Set objfso = CreateObject("Scripting.FileSystemObject")

       ‘ 判斷在指定的路徑中是否有

       If Not objfso.FolderExists(strpath) Then

               objset = objfso.CreateFolder(strpath)

       else

               objset = objfso.DeleteFolder(strpath)

       End If

       hanshu = objset

End Function

 

hanshu("c:/new folder")

GetAbsolutePathName的使用

方法名:GetAbsolutePathName(pathspec)

說明:從提供的指定路徑中返回完整且含義明確的路徑。詳細說明請查看錶4。

示例:

Dim objfso

創建FileSystemObject對象

Set objfso = createobject("Scripting.FileSystemObject")

返回當前的目錄,下面兩條語句返回一樣的結果

msgbox (objfso.GetAbsolutePathName(""))

msgbox (objfso.GetAbsolutePathName("C:"))

GetFolder的使用

方法名:GetFolder(folderspec)

說明:返回與指定的路徑中某文件夾相應的 Folder 對象。可以根據所返回的Folder 對象,再去訪問該Folder 對象所持有的屬性。

示例:

Dim objfso,objset

'創建FileSystemObject對象

Set objfso = createobject("Scripting.FileSystemObject")

'返回C:/testingFolder的對象

Set objset = objfso.GetFolder("C:/testing")

根據所返回的Folder對象,去訪問其相關的屬性

reporter.ReportEvent micDone ,"Folder對象的相關屬性","文件夾創建的日期:" & objset.DateCreated &"; 文件夾所在的驅動:" & objset.Drive & "; 文件夾的名字:" & objset.Name

注:關於Folder對象的屬性,將在下面會詳細介紹

GetParentFolderName的使用

方法名:GetParentFolderName(pathspec)

說明:返回字符串,該字符串包含指定的路徑中最後一個文件或文件夾的父文件夾。

示例:

Dim objfso

'創建FileSystemObject對象

Set objfso = createobject("Scripting.filesystemobject")

'使用GetParentFolderName方法來返回上一層文件夾

msgbox (objfso.GetParentFolderName("C:/WINDOWS/addins"))

GetSpecialFolder的使用

方法名:GetSpecialFolder(folderspec)

說明:返回指定的特殊文件夾。詳細說明請查看錶4。

示例:

Dim fso,tempName

Set fso = CreateObject("Scripting.FileSystemObject")

'GetSpecialFolder()中的參數2,返回一個名爲Temp的臨時文件夾

Set tempName = fso.GetSpecialFolder(2)

msgbox tempName

MoveFolder的使用

方法名:MoveFolder(source,destination)

說明:將一個或多個文件夾從某位置移動到另一位置。詳細說明請查看錶4。

示例:

Dim sourcepath,destination

sourcepath = "C:/testing"

destination = "C:/123"

'調用MoveFolders方法

call MoveFolders(sourcepath,destination)

 

Sub MoveFolders(sourcepath,destination)

   Dim fso

       '創建FileSystemObject對象

   Set fso = CreateObject("Scripting.FileSystemObject")

       '使用MoveFolder方法,將testing文件夾的內容移動到123文件夾下

   fso.MoveFolder sourcepath,destination

End Sub

注:如果腳本在運行前文件夾123已存在,則運行是會發生錯誤;在不同的磁盤下MoveFolder方法不能用

       上面提到的Folder方法是基於FileSystemObject 對象的,現在我們來看看基於Folder對象的方法。

Folder對象所提供的方法

Folder 對象提供一組可用於複製、刪除和移動當前文件夾的方法。這些方法的運行方式與 FileSystemObject 對象的CopyFolder、DeleFolder 和 MoveFolder 方法相同,但這些方法不要求 source 參數,因爲源文件就是這個文件夾。

備註:CopyFolderDeleFolder等方法是基於FileSystemObject 對象的;而下面的CopyDelete等方法是基於FileSystemObject對象下的Folder對象,他們實現的功能是類似的。

5 Folder 對象的方法及說明

方法

說明

Copy(destination,overwrite)

將這個文件夾及所有的內容複製到 destination 指定的文件夾。如果 destination 的末尾是路徑分隔符(‘’),那麼認爲 destination 是放置拷貝文件夾的一個文件夾。否則認爲 destination 是要創建的新文件夾的路徑和名字。如果目標文件夾已經存在且 overwrite 參數設置爲 False,將產生錯誤,缺省的 overwrite 參數是 True

Delete(force)

刪除文件夾及裏面的所有內容。如果可選的 force 參數設置爲 True,即使文件夾設置爲只讀或含有隻讀的文件,也將刪除該文件夾。缺省的 force  False

Move(destination)

將文件夾及裏面所有的內容移動到 destination 指定的文件夾。如果 destination 的末尾是路徑分隔符(‘’),那麼認爲 destination 是放置移動文件夾的一個文件夾。否則認爲 destination 是一個新的文件夾的路徑和名字。如果目標文件夾已經存在,則出錯

CreateTextFile(filename,overwrite,unicode)

用指定的文件名在文件夾內創建一個新的文件,並且返回一個相應的TextStream 對象。如果可選的 overwrite參數設置爲True,將覆蓋任何已有的同名文件。缺省的overwrite 參數是 False。如果可選的 unicode 參數設置爲 True,文件的內容將存儲爲 unicode 文本。缺省的 unicode  False

Copy的使用

方法名:Copy(destination,overwrite)

說明:將文件夾的所有內容,複製到destination文件夾中。詳細說明請見表5

示例:

Dim sourcepath

sourcepath = "C:/testing"

Call FolderAttributes(sourcepath)

 

Sub FolderAttributes(sourcepath)

   Dim fso,objset

    Set fso = CreateObject("Scripting.FileSystemObject")

    '使用GetFolder方法來返回Folder對象

    Set objset = fso.getFolder(sourcepath)

    '將testing中的所有內容複製到123文件夾中

    objset.Copy("d:/123")

End Sub

備註:如果目標文件夾不存在,則腳本在運行是將自動創建

Delete的使用

方法名:Delete(force)

說明:刪除文件夾及裏面的所有內容。詳細說明請見表5

示例:

Dim sourcepath

sourcepath = "C:/testing"

Call FolderAttributes(sourcepath)

 

Sub FolderAttributes(sourcepath)

   Dim fso,objset

    Set fso = CreateObject("Scripting.FileSystemObject")

    '使用GetFolder方法來返回Folder對象

    Set objset = fso.getFolder(sourcepath)

    '將testingw文件夾及文件夾裏所有的內容全部刪除

    objset.Delete(True)

End Sub

備註:如果文件夾屬性爲只讀且Delete的參數爲False,則腳本在運行是將提示“沒有權限”;當文件夾不存在時,將提示“路徑未找到”。

Move的使用

方法名:Move(destination)

說明:將文件夾及裏面所有的內容移動到 destination 指定的文件夾。詳細說明請見表5

示例:

Dim sourcepath

sourcepath = "C:/testing"

Call FolderAttributes(sourcepath)

 

Sub FolderAttributes(sourcepath)

   Dim fso,objset

       Set fso = CreateObject("Scripting.FileSystemObject")

       '使用GetFolder方法來返回Folder對象

       Set objset = fso.getFolder(sourcepath)

       '使用Move()testing文件夾及裏面所有的內容,移動到目標文件夾123

       objset.Move("C:/123")

End Sub

備註:如果目標文件夾123已存在,則腳本運行時提示“文件已存在”;如果目標文件夾123D:/,則腳本運行使提示“沒有權限”

CreateTextFile的使用

方法名:CreateTextFile(filename,overwrite,unicode)

說明:創建指定文件並返回 TextStream 對象,該對象可用於讀或寫創建的文件。詳細說明請見表5

示例:

Dim sourcepath

sourcepath = "C:/testing"

Call FolderAttributes(sourcepath)

 

Sub FolderAttributes(sourcepath)

   Dim fso,objset

       Set fso = CreateObject("Scripting.FileSystemObject")

       '使用GetFolder方法來返回Folder對象

       Set objset = fso.getFolder(sourcepath)

'testing文件夾下,使用CreateTextFile()創建myClass2.doc文件

    objset.CreateTextFile "myClass2.doc",true

End Sub

備註:CreateTextFile()所創建的文件類型是根據所提供的擴展名來確定的,如也可以寫成myClass2.txtmyClass.exe等等;FileSystemObject對象也可以調用CreateTextFile(),我們可以將上面的代碼改寫成:

fso.CreateTextFile “C:/testing/myClass.doc”,true

Folder對象所提供的屬性:

6 Folder 對象的屬性及說明

屬性

說明

Attributes

返回文件夾的屬性。可以是下列值中的一個或其組合:Normal(0)ReadOnly(1)Hidden(2)System(4)Volume(名稱)(8)Directory(文件夾)(16)Archive(32)Alias(64)  Compressed(128)。例如,一個隱藏的只讀文件,Attributes 的值爲 3

DateCreated

返回該文件夾的創建日期和時間

DateLastAccessed

返回最後一次訪問該文件夾的日期和時間

DateLastModified

返回最後一次修改該文件夾的日期和時間

Drive

返回該文件夾所在的驅動器的驅動器字母

Files

返回 Folder 對象包含的 Files 集合,表示該文件夾內所有的文件

IsRootFolder

返回一個布爾值說明該文件夾是否是當前驅動器的根文件夾

Name

設定或返回文件夾的名字

ParentFolder

返回該文件夾的父文件夾對應的 Folder 對象

Path

返回文件夾的絕對路徑,使用相應的長文件名

ShortName

返回 DOS 風格的 8.3 形式的文件夾名

ShortPath

返回 DOS 風格的 8.3 形式的文件夾的絕對路徑

Size

返回包含在該文件夾裏所有文件和子文件夾的大小

SubFolers

返回該文件夾內包含的所有子文件夾對應的 Folders 集合,包括隱藏文件夾和系統文件夾

Type

如果可能,返回一個文件夾的說明字符串(例如,“Recycle Bin”

如上面提到的,我們可以使用下面的腳本來訪問Folder對象

Dim objfso,objset

'創建FileSystemObject對象

Set objfso = createobject("Scripting.FileSystemObject")

'返回C:/testingFolder的對象

Set objset = objfso.GetFolder("C:/testing")

注:通過Folder對象我們就可以訪問其提供的方法及屬性

Drive、DateCreated、Name屬性的使用

示例:

Dim sourcepath

sourcepath = "C:/testing"

Call FolderAttributes(sourcepath)

 

Sub FolderAttributes(sourcepath)

   Dim fso,objset

       Set fso = CreateObject("Scripting.FileSystemObject")

       '使用GetFolder方法來返回Folder對象

       Set objset = fso.getFolder(sourcepath)

       '通過Folder對象來訪問Folder屬性

       reporter.ReportEvent micDone ,"測試Folder屬性","文件夾所在的磁盤爲:" & objset.Drive & " 文件夾所創建的日期:" & objset.DateCreated & " 文件夾的名字爲:" & objset.Name

End Sub

SubFolers屬性的使用

示例:

Dim sourcepath

sourcepath = "C:/Program Files/Common Files"

Call FolderAttributes(sourcepath)

 

Sub FolderAttributes(sourcepath)

   Dim fso,objset,objFolders,FolderName,i

   i = 0

       Set fso = CreateObject("Scripting.FileSystemObject")

       '使用GetFolder方法來返回Folder對象

       Set objset = fso.getFolder(sourcepath)

       'SubFolders屬性將返回所有子文件夾對應的Folder集合

       Set objFolders = objset.SubFolders

       '遍歷Folder集合,統計出共有多少個文件夾,及相關文件夾的名字

       For Each objFolder in objFolders

              i = i +1

              'vbcr爲換行符

              FolderName =  FolderName + objFolder.Name + vbcr

       Next

       msgbox ("共有" & i &"個文件夾,文件夾的名字爲:" & FolderName)

End Sub

Files屬性的使用

示例:

Dim objFso,objGetFolder,intCount,strFileName

intCount = 0

'創建FileSystemObject對象

Set objFso= CreateObject("Scripting.FileSystemObject")

'使用GetFolder()獲得文件夾對象

Set objGetFolder = objFso.GetFolder("C:/test")

'遍歷Files集合並顯示文件夾中所有的文件名

For Each strFile in objGetFolder.Files

       intCount = intCount + 1

       strFileName =strFileName &  "第" & intCount & "個文件夾名爲:" & strFile.Name & vbcr

Next

msgbox strFileName

3. 以文件有關的方法及屬性

FileSystemObject對象來操作文件的方法:

與文件有關的方法及說明

方法

說明

CopyFile(source,destination,overwrite)

 source(可包含通配符)指定的一個或多個文件複製到指定的目標文件夾 destination。如果 source 包含通配符或 destination 末尾是路徑分隔符(‘’),那麼認爲 destination 是文件夾。否則認爲 destination 爲一新文件的完全路徑和名稱。如果目標文件夾已經存在且 overwrite 參數設置爲 False,將產生錯誤。缺省的 overwrite 參數是 True

CreateTextFile(filename,overwrite,unicode)

用指定的文件名 filename 在磁盤上創建一個新的文本文件,並返回與其對應的 TextStream 對象,如果可選的 overwrite 參數設置爲 True,則覆蓋同一路徑下已有的同名文件。缺省的 overwrite 參數是 False。如果可選的 unicode 參數設置爲 True,則該文件的內容將存儲爲 Unicode 文本,缺省的 unicode 參數是 False

DeleFile(filespec,force)

刪除由 filespec 指定的一個或多個文件(可以在路徑的最後部分包含通配符)。如果可選的 force 參數設置爲 true,那麼也刪除具有隻讀屬性的文件。缺省的 force 參數是False

FileExists(filespec)

如果 filespec 指定的文件存在則返回 True,否則返回 Falsefilespec 參數可以包含文件的絕對路徑或相對路徑,或者是當前文件夾中的文件名

GetBaseName(filespec)

返回 filespec 指定的文件的名稱,即包含文件路徑但去掉了文件的擴展名

GetExtensionName(filespec)

返回 filespec 指定的文件的擴展名

GetFile(filespec)

返回 filespec 指定的文件所對應的 File 對象。可以指定文件的相對或絕對路徑

GetFileName(pathspec)

返回pathspec 指定的文件的路徑或文件名,如果沒有文件名就返回最後的文件夾名。不檢查該文件或文件夾是否存在

GetTempName()

返回一個隨機產生的文件名,用於完成運算所需的臨時文件或文件夾

MoveFile(source,destination)

 source 指定的一個或多個源文件移動到 destination 指定的目的文件夾。在 source裏可以包含通配符,但 destination 不行。如果 source 包含通過配符或 destination 末尾是路徑分隔符(‘’),那麼認爲 destination 是一文件夾。否則,認爲 destination 是一新文件夾的完整路徑和名稱。如果目的文件夾已經存在則產生錯誤

OpenTextFile(filename,iomode,create,format)

創建一個名叫做 filename 的文件,或打開一個現有的名爲 filename 的文件,並且返回一個與其相關的 TextStream 對象。filename 參數可以包含絕對或相對路徑。iomode 參數指定了所要求的訪問類型。允許的數值是 ForReading(1)(缺省)、ForWriting(2)ForAppending(8)。當寫入或追加到一個不存在的文件時,如果 create 參數設置爲 true,就將創建一個新文件。缺省的 create 參數是 Falseformat 參數說明對文件讀或寫的數據格式。允許數值是:TristatetFalse(0)(缺省),按照 ASCII 格式打開;TristatetTrue(-1),按照 Unicode 格式打開;TristateDefault(-2),用系統缺省格式打開

CopyFile及MoveFile的使用

方法名:CopyFile(source,destination,overwrite)

說明:將一個或多個文件從某位置複製到另一位置。詳細說明請見表7

方法名:MoveFile(source,destination)

說明: source 指定的一個或多個源文件移動到 destination 指定的目的文件夾。

示例:

Dim sourcepath,targetpath

sourcepath = "C:/testing/*.txt"

targetpath = "C:/123/"

Call FolderAttributes(sourcepath,targetpath)

Sub FolderAttributes(sourcepath,targetpath)

   Dim fso

       Set fso = CreateObject("Scripting.FileSystemObject")

'testing文件夾下所有擴展名名爲.txt的文件,複製到123文件夾下

       fso.CopyFile sourcepath,targetpath

       fso.MoveFile sourcepath,targetpath

End Sub

備註:如果C:/123文件夾不存在,則腳本運行時提示“路徑不存在”

CreateTextFile及DeleteFile的使用

方法名:CreateTextFile(filename,overwrite,unicode)

說明:創建指定文件並返回 TextStream 對象,該對象可用於讀或寫創建的文件。

方法名:DeleFile(filespec,force)

說明:刪除指定的文件。詳細說明請見表7.

示例:

Dim sourcepath

sourcepath = "C:/testing/ myClass2.doc "

Call FolderAttributes(sourcepath)

 

Sub FolderAttributes(sourcepath)

   Dim fso

       Set fso = CreateObject("Scripting.FileSystemObject")

'testing文件夾下,使用CreateTextFile()創建myClass2.doc文件

fso.CreateTextFile sourcepath,true

'刪除testing文件夾下,所有擴展名爲.txt的文件

fso.DeleteFile sourcepath,true

End Sub

備註:如果所刪除的文件爲只讀屬性且DeleteFile()的參數爲false的話,則腳本運行是出現“沒有權限”FileExists的使用

方法名:FileExists(filespec)

說明:判斷所指定的文件是否存在。此方法將返回Bool. 詳細說明請見表7.

示例:

Dim sourcepath

sourcepath = "C:/testing/test.txt"

Call FolderAttributes(sourcepath)

 

Sub FolderAttributes(sourcepath)

   Dim fso

       Set fso = CreateObject("Scripting.FileSystemObject")

       '判斷C:/testing/test.txt是否有存在,如果存在返回“true;否則返回“false

       If fso.FileExists(sourcepath) Then

              msgbox "true"

       else

              msgbox "false"

       End If

End Sub

GetBaseName、GetFileName及GetExtensionName的使用

方法名:GetBaseName(filespec)

說明:返回字符串,文件 (不帶擴展名), 或者提供的路徑說明中的文件夾。

方法名:GetExtensionName(filespec)

說明:返回字符串,該字符串包含路徑最後一個組成部分的擴展名。

方法名:GetFileName(pathspec)

說明:返回指定路徑(不是指定驅動器路徑部分)的最後一個文件或文件夾。

示例:

Dim sourcepath

sourcepath = "C:/testing/test.txt"

Call FolderAttributes(sourcepath)

 

Sub FolderAttributes(sourcepath)

   Dim fso

       Set fso = CreateObject("Scripting.FileSystemObject")

       '返回文件名test, 擴展名 txt, 文件名+擴展名 test.txt

         Msgbox (fso.GetBaseName(sourcepath))

         Msgbox (fso. GetExtensionName(sourcepath))

       Msgbox (fso.GetFileName(sourcepath))

End Sub

GetFile的使用

方法名:GetFile(filespec)

說明:返回與指定路徑中某文件相應的 File 對象,既而可以訪問到File的屬性。

示例:

Dim sourcepath

sourcepath = "C:/testing/778899.txt"

Call FolderAttributes(sourcepath)

 

Sub FolderAttributes(sourcepath)

   Dim fso,objFile

       Set fso = CreateObject("Scripting.FileSystemObject")

       '調用GetFile()返回File對象,通過File對象來訪問其下的屬性

       set objFile = fso.GetFile(sourcepath)

       reporter.ReportEvent micDone,"訪問file的屬性","該文件所在的盤符爲:" & objFile.Drive & "              文件名爲:" & objFile.Name

End Sub

注:關於File對象的屬性,將在下面會詳細介紹

GetTempName的使用

方法名:GetTempName()

說明:返回隨機生成的臨時文件或文件夾的名稱,用於執行要求臨時文件或文件夾的操作

示例:

Dim fso, tempfile

'創建FileSystemObject對象

Set fso = CreateObject("Scripting.FileSystemObject")

'調用CreateTempFile函數,並將對象賦值給tempfile

Set tempfile = CreateTempFile

'在臨時文件中寫入字符

tempfile.WriteLine "世界你好"

'關閉對象

tempfile.Close

 

Function CreateTempFile

   Dim tfolder, tname, tfile

   Const TemporaryFolder = 2

   'GetSpecialFolder()中的參數2,返回一個名爲Temp的臨時文件夾

   Set tfolder = fso.GetSpecialFolder(TemporaryFolder)

   '隨機生成一個臨時文件名

   tname = fso.GetTempName 

   'Temp臨時文件夾下面,創建一個臨時文件

   Set tfile = tfolder.CreateTextFile(tname)

   '將結果賦值給函數

   Set CreateTempFile = tfile

End Function

備註:GetTempName 方法不創建文件,該方法僅提供臨時文件名。示例中的的結果,默認保存在C:/Documents and Settings/Administrator/Local Settings/Temp

OpenTextFile的使用

方法名:(filename,iomode,create,format)

說明:打開指定的文件並返回一個 TextStream 對象,可以讀取、寫入此對象或將其追加到文件。詳細的說明見表7.

示例:

Dim spec

spec = "C:/testing.txt"

'三個參數的分別爲:以只讀模式打開文件、以只寫方式打開文件、打開文件並在文件末尾進行寫操作

Const intForReading = 1,intForWriting = 2,intForAppending = 8

'調用OpenTextFileTest()

Call OpenTextFileTest(spec,intForAppending)

 

Sub OpenTextFileTest(sepc,intForAppending)

   Dim fso,objTStream

   '創建FileSystemObject對象

   Set fso = CreateObject("Scripting.FileSystemObject")

   '參數true表示:如果文件不存在,則創建文件。最後OpenTextFile()將返回TextStream對象

   Set objTStream = fso.OpenTextFile(sepc,intForAppending,true)

   '利用TextStream對象來將字符串寫入文件

   objTStream.write "hello word!"

   '釋放TextStream對象

   objTStream.close

End Sub

File對象所提供的屬性

8 File 對象的屬性及說明

屬性

說明

Attributes

返回文件的屬性。可以是下列值中的一個或其組合:Normal(0)ReadOnly(1)Hidden(2)System(4)Volume(名稱)(9)Directory(文件夾)(16)Archive(32)Alias(64)  Compressed(128)

DateCreated

返回該文件夾的創建日期和時間

DateLastAccessed

返回最後一次訪問該文件的日期和時間

DateLastModified

返回最後一次修改該文件的日期和時間

Drive

返回該文件所在的驅動器的 Drive 對象

Name

設定或返回文件的名字

ParentFolder

返回該文件的父文件夾的 Folder 對象

Path

返回文件的絕對路徑,可使用長文件名

ShortName

返回 DOS 風格的 8.3 形式的文件名

ShortPath

返回 DOS 風格的 8.3 形式的文件絕對路徑

Size

返回該文件的大小(字節)

Type

如果可能,返回一個文件類型的說明字符串(例如:“Text Document”表示 .txt 文件)

       我們在前面File對象的方法中曾提到,可以使用FileSystemObject對象的GetFile()來訪問File對象屬性。

       訪問File對象屬性的示例如下:

Dim sourcepath

sourcepath = "C:/testing/778899.txt"

Call FolderAttributes(sourcepath)

 

Sub FolderAttributes(sourcepath)

   Dim fso,objFile

       Set fso = CreateObject("Scripting.FileSystemObject")

       '調用GetFile()返回File對象,通過File對象來訪問其下的屬性

       set objFile = fso.GetFile(sourcepath)

       reporter.ReportEvent micDone,"訪問file的屬性","該文件所在的盤符爲:" & objFile.Drive & "              文件名爲:" & objFile.Name

End Sub

備註:File對象屬性的使用方法和前面介紹的Folder對象屬性的使用方法一樣,所以在這不一一列出。

TextStream對象概述

       TextStream對象是用於訪問文本文件的對象,它是FileSystemObject一個獨立的附屬對象,但在使用TextStream對象時,我們仍要藉助FileSystemObject 對象或其附屬對象來創建一個 TextStream 對象並訪問磁盤文件的內容。可以通過FileSystemObject 對象的CreateTextFile()OpenTextFile(),來獲取TextStream的對象句柄。

下面我們來具體的看看TextStream 對象的方法及屬性的使用。

一、TextStream對象的方法

9  TextStream 對象的方法及說明

方法

說明

Close()

關閉一個打開的文件

Read(numchars)

從文件中讀出 numchars 個字符

ReadAll()

作爲單個字符串讀出整個文件

ReadLine()

作爲一個字符串從文件中讀出一行(直到回車符和換行)

Skip(numchars)

當從文件讀出時忽略 numchars 個字符

SkipLine()

當從文件讀出時忽略下一行

Write(string)

向文件寫入字符串 string

WriteLine(string)

向文件寫入字符串 string(可選)和換行符

WriteBlankLines(n)

向文件寫入 n 個換行符

Close、Write、WriteLine及WriteBlankLines的使用

方法名:Close()

說明:關閉正在打開的文件

方法名:WriteLine(string)

說明:向文件寫入字符串 string(可選)和換行符。

示例:

Dim strPath,strText

strPath = "C:/testing.txt"

strText = "This is Test !" & vbCrLf & “hello word !”

'調用函數

Call CreateFile(strPath,strText)

 

Sub CreateFile(strPath,strText)

       Dim objFso,objStream

       '創建FileSystemObject對象

       Set objFso = CreateObject("Scripting.FileSystemObject")

       '使用FileSystemObject對象的CreateTextFile(),來返回一個TextStream對象句柄

       Set objStream = objFso.CreateTextFile(strPath,True)

       '三個Write的意思分別爲:在文本中寫入字符、寫入帶換行符的字符、寫入3個換行符

         objStream.Write(strText)

       ‘objStream.WriteLine(strText)

       ‘objStream. WriteBlankLines 3

       '關閉TextStream對象

       objStream.Close

End Sub

Read、ReadAll及ReadLine的使用

方法名:Read(numchars)

說明:從 TextStream 文件中讀入指定數目的字符並返回結果字符串。

方法名:ReadAll()

說明:讀入全部 TextStream 文件並返回結果字符串。

方法名:ReadLine()

說明:從 TextStream 文件中讀入一整行字符(直到下一行,但不包括下一行字符),並返回結果字符串。

示例:

Sub CreateFile(strPath,strText)

       Dim objFso,objStream

       '創建FileSystemObject對象

       Set objFso = CreateObject("Scripting.FileSystemObject")

       '使用FileSystemObject對象的CreateTextFile(),來返回一個TextStream對象句柄

       Set objStream = objFso.CreateTextFile(strPath,True)

       '寫入字符

       objStream.WriteLine(strText)

       Set objStream = objFso.OpenTextFile(strPath,1,true)

       msgbox (objStream.ReadLine)

       'msgbox (objStream.ReadAll)

   ' msgbox (objStream.Read(Len(strText)))

         '關閉TextStream對象

       objStream.Close

End Sub

Skip、SkipLine的使用

方法名:Skip(numchars)

說明:讀取 TextStream 文件時跳過指定數目的字符

方法名:SkipLine()

說明:當讀到 TextStream 文件時,跳過下一行。

示例:

Dim strPath,strText

strPath = "C:/testing.txt"

'調用函數

Call CreateFile(strPath)

 

Sub CreateFile(strPath)

       Dim objFso,objStream

       '創建FileSystemObject對象

       Set objFso = CreateObject("Scripting.FileSystemObject")

       '使用FileSystemObject對象的CreateTextFile(),來返回一個TextStream對象句柄

       Set objStream = objFso.CreateTextFile(strPath,True)

       '在文本中寫入字符

       objStream.Write "This is Test !" & vbCrLf & "hello word !"

       '以只讀的方式打開文件

       Set objStream = objFso.OpenTextFile(strPath,1,true)

       '讀取文件時跳過5個字符;或者跳過當前行,讀取下一行

       objStream.Skip(5)

       'objStream.SkipLine

         '讀取文本內容

       msgbox objStream.ReadAll

       '關閉TextStream對象

       objStream.Close

End Sub

備註:兩者的區別是:Skip——跳過指定的幾個字符;SkipLine——跳過一行

二、TextStream對象的屬性

TextStream 的屬性提供有關文件內文件指針當前位置的信息,如表9所示。注意,所有的屬性是隻讀的。

10  TextStream 對象的屬性及說明

屬性

說明

AtEndOfLine

如果文件位置指針在文件中一行的末尾則返回 True

AtEndOfStream

如果文件位置指針在文件的末尾則返回 True

Column

 1 開始返回文件中當前字符的列號

Line

 1 開始返回文件中當前行的行號

AtEndOfLine 和 AtEndOfStream 屬性僅對以 iomode 參數爲 ForReading 的方式打開的文件可用,否則將會出錯。

AtEndOfLine及AtEndOfStream的使用

示例:

Dim strPath,strText

strPath = "C:/testing.txt"

'調用函數

Call CreateFile(strPath)

 

Sub CreateFile(strPath)

       Dim objFso,objStream,str

       '創建FileSystemObject對象

       Set objFso = CreateObject("Scripting.FileSystemObject")

       '以只讀的方式打開文件,如果文件不存在則創建它

       Set objStream = objFso.OpenTextFile(strPath,1,true)

       '如果當前的指針不在行末,則讀取文本內容

       Do While objStream.AtEndOfLine <> true

       ‘Do While objStream.AtEndOfStream <> true

              str = str + objStream.Read(1)

       Loop

       msgbox str

         '關閉TextStream對象

       objStream.Close

End Sub

備註:兩者間的區別是:AtEndOfLine——讀取到當前文本行的末尾;AtEndOfStream——讀取到整個文本的末尾

Column及Line的使用

示例:

Sub TestTextStream(strPath)

   Dim objFso,objTStream,str

       Set objFso = CreateObject("Scripting.FileSystemObject")

       '以只讀的方式打開文件

       Set objTStream = objFso.OpenTextFile(strPath,1)

       '如果當前的指針不在整個文檔的末尾,讀取文本的所有內容

   Do While objTStream.AtEndOfStream <> true

                    objTStream.ReadAll

                 str = str + "共有" & objTStream.Line & "行數據,光標最後所在列號爲:" & objTStream.Column & vbCrLf

   Loop

       '打印信息

print str

End Sub

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章