您好,登錄后才能下訂單哦!
這篇文章給大家介紹VBS中FileSystemObject對象有什么用,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
FileSystemObject對象概述
FileSystemObject 對象的作用:提供對計算機文件系統的訪問,它允許我們在代碼內操作文本文件、文件夾及驅動器。FileSystemObject 對象提供一個屬性和一系列方法,可用它們來操縱 FileSystemObject 對象實現的一些從屬對象。這里提供了全部的內容概要,然后介紹每一個從屬對象。
一、FileSystemObject 對象的屬性
FileSystemObject 對象只有一個屬性,它用于得到當前機器上的所有有效驅動器的列表,如表1所示:
表1 FileSystemObject 對象的屬性和說明 | |
屬性 | 說明 |
Drivers | 返回本地計算機可用的驅動器列表 |
'如下腳本就可以獲得FileSystemObject的Drivers屬性 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. 與驅動器有關的方法
表3 與驅動器有關的方法及說明 | |
方法 | 說明 |
DriveExists(drivespec) | 如果在 drivespec 中指定的驅動器存在,則返回 True,否則返回 False。drivespec 參數可以是一個驅動器字母,或者是文件、文件夾的完整絕對路徑 |
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對象來操作文件夾的方法:
表4 與文件夾有關的方法及說明 | |
方法 | 說明 |
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,否則返回 False。folderspec 參數可以包含文件夾的絕對或相對路徑,或者僅僅是當前文件夾中看到的文件夾名 |
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:/testing的Folder的對象
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 參數,因為源文件就是這個文件夾。
備注:CopyFolder、DeleFolder等方法是基于FileSystemObject 對象的;而下面的Copy、Delete等方法是基于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已存在,則腳本運行時提示“文件已存在”;如果目標文件夾123在D:/,則腳本運行使提示“沒有權限”
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.txt、myClass.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:/testing的Folder的對象
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對象來操作文件的方法:
表7 與文件有關的方法及說明 | |
方法 | 說明 |
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,否則返回 False。filespec 參數可以包含文件的絕對路徑或相對路徑,或者是當前文件夾中的文件名 |
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 參數是 False。format 參數說明對文件讀或寫的數據格式。允許數值是: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實例代碼
創建文件
set fso = server.CreateObject("Scripting.FileSystemObject") set f = fso.CreateTextFile("C:\test.txt", true) '第二個參數表示目標文件存在時是否覆蓋 f.Write("寫入內容") f.WriteLine("寫入內容并換行") f.WriteBlankLines(3) '寫入三個空白行(相當于在文本編輯器中按三次回車) f.Close() set f = nothing set fso = nothing
打開并讀文件
set fso = server.CreateObject("Scripting.FileSystemObject") set f = fso.OpenTextFile("C:\test.txt", 1, false) '第二個參數 1 表示只讀打開,第三個參數表示目標文件不存在時是否創建 f.Skip(3) '將當前位置向后移三個字符 f.SkipLine() '將當前位置移動到下一行的第一個字符,注意:無參數 response.Write f.Read(3) '從當前位置向后讀取三個字符,并將當前位置向后移三個字符 response.Write f.ReadLine() '從當前位置向后讀取直到遇到換行符(不讀取換行符),并將當前位置移動到下一行的第一個字符,注意:無參數 response.Write f.ReadAll() '從當前位置向后讀取,直到文件結束,并將當前位置移動到文件的最后 if f.atEndOfLine then response.Write("一行的結尾!") end if if f.atEndOfStream then response.Write("文件的結尾!") end if f.Close() set f = nothing set fso = nothing
打開并寫文件
set fso = server.CreateObject("Scripting.FileSystemObject") set f = fso.OpenTextFile("C:\test.txt", 2, false) '第二個參數 2 表示重寫,如果是 8 表示追加 f.Write("寫入內容") f.WriteLine("寫入內容并換行") f.WriteBlankLines(3) '寫入三個空白行(相當于在文本編輯器中按三次回車) f.Close() set f = nothing set fso = nothing
判斷文件是否存在
set fso = server.CreateObject("Scripting.FileSystemObject") if fso.FileExists("C:\test.txt") then response.Write("目標文件存在") else response.Write("目標文件不存在") end if set fso = nothing
移動文件
set fso = server.CreateObject("Scripting.FileSystemObject")
call fso.MoveFile("C:\test.txt", "D:\test111.txt") '兩個參數的文件名部分可以不同
set fso = nothing
復制文件
set fso = server.CreateObject("Scripting.FileSystemObject")
call fso.CopyFile("C:\test.txt", "D:\test111.txt") '兩個參數的文件名部分可以不同
set fso = nothing
刪除文件
set fso = server.CreateObject("Scripting.FileSystemObject")
fso.DeleteFile("C:\test.txt")
set fso = nothing
創建文件夾
set fso = server.CreateObject("Scripting.FileSystemObject")
fso.CreateFolder("C:\test") '目標文件夾的父文件夾必須存在
set fso = nothing
判斷文件夾是否存在
set fso = server.CreateObject("Scripting.FileSystemObject")
if fso.FolderExists("C:\Windows") then
response.Write("目標文件夾存在")
else
response.Write("目標文件夾不存在")
end if
set fso = nothing
刪除文件夾
set fso = server.CreateObject("Scripting.FileSystemObject")
fso.DeleteFolder("C:\test") '文件夾不必為空
set fso = nothing
檢測驅動器C盤是否存在
Set fso = Server.CreateObject("Scripting.FileSystemObject")
fso.DriveExists("c:")
獲取文件路徑的驅動器名
Set fso=Server.CreateObject("Scripting.FileSystemObject")
p=fso.GetDriveName(Server.MapPath("aqa33"))
Response.Write("驅動器名稱是:" & p)
set fs=nothing
取得某個指定的路徑的父文件夾的名稱
Set fso=Server.CreateObject("Scripting.FileSystemObject")
p=fso.GetParentFolderName(Server.MapPath("aqa331.asp"))
Response.Write("父文件夾名稱是:" & p)
set fs=nothing
取得指定路徑中的最后一個成分的文件擴展名
Set fs=Server.CreateObject("Scripting.FileSystemObject")
Response.Write(fs.GetExtensionName(Server.MapPath("aqa33.asxd")))
set fs=nothing
取得指定路徑中的最后一個成分的文件名
Set fs=Server.CreateObject("Scripting.FileSystemObject")
Response.Write(fs.GetFileName(Server.MapPath("aqa33.asxd")))
set fs=nothing
返回在指定的路徑中文件或者文件夾的基本名稱。
Set fso=Server.CreateObject("Scripting.FileSystemObject")
Response.Write(fso.GetBaseName("c:\windows\cursors\abc.cur"))
Response.Write("<br />")
Response.Write(fso.GetBaseName("c:\windows\cursors\"))
Response.Write("<br />")
Response.Write(fso.GetBaseName("c:\windows\"))
set fso=nothing
關于VBS中FileSystemObject對象有什么用就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。