VBS中FileSystemObject对象详解
下面是转摘的关于FileSystemObject的详细介绍,TextStream是其中的一个子对象。
前言
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 对象,可以在服务器上产生一个驱动器列表,与通过检查每个可能的驱动器字母来判别驱动器是否存在的方法相比,效率更高。我们也可以得到关于该驱动器的信息。
Set objFSO = CreateObject("Scripting.FileSystemObject")
For Each objDrive in colDrives
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 "
reporter.ReportEvent micDone ,"遍历Drives集合",msg
二、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的使用
说明:如果在 drivespec 中指定的驱动器存在,则返回 True,否则返回 False。drivespec 参数可以是一个驱动器字母,或者是文件、文件夹的完整绝对路径
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
另外,如果已知要访问的驱动器、文件夹或文件。可以直接对其使用 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。
Set objfso = createobject("scripting.FileSystemObject")
objfso.CopyFolder "D:/test","c:/123"
CreateFolder及DeleteFolder的使用
方法名:CreateFolder(foldername)/DeleteFolder(folderspec,force)
说明:创建/删除一个路径名为 foldername 的文件夹。详细说明请查看表4。
Set objfso = createobject("scripting.FileSystemObject")
‘ 在c:/创建new folder文件夹,如果文件夹存在,则会出现错误提示
objfso.CreateFolder("c:/new folder")
objfso.DeleteFolder("c:/new folder")
注:DeleteFolder无论文件夹是否包含内容,都将删除该文件夹
FolderExists的使用
说明:如果指定的文件夹存在,则返回 True;否则返回 False。详细说明请查看表4。
Set objfso = CreateObject("Scripting.FileSystemObject")
If Not objfso.FolderExists(strpath) Then
objset = objfso.CreateFolder(strpath)
objset = objfso.DeleteFolder(strpath)
GetAbsolutePathName的使用
方法名:GetAbsolutePathName(pathspec)
说明:从提供的指定路径中返回完整且含义明确的路径。详细说明请查看表4。
Set objfso = createobject("Scripting.FileSystemObject")
msgbox (objfso.GetAbsolutePathName(""))
msgbox (objfso.GetAbsolutePathName("C:"))
GetFolder的使用
说明:返回与指定的路径中某文件夹相应的 Folder 对象。可以根据所返回的Folder 对象,再去访问该Folder 对象所持有的属性。
Set objfso = createobject("Scripting.FileSystemObject")
Set objset = objfso.GetFolder("C:/testing")
GetParentFolderName的使用
方法名:GetParentFolderName(pathspec)
说明:返回字符串,该字符串包含指定的路径中最后一个文件或文件夹的父文件夹。
Set objfso = createobject("Scripting.filesystemobject")
'使用GetParentFolderName方法来返回上一层文件夹
msgbox (objfso.GetParentFolderName("C:/WINDOWS/addins"))
GetSpecialFolder的使用
方法名:GetSpecialFolder(folderspec)
Set fso = CreateObject("Scripting.FileSystemObject")
'GetSpecialFolder()中的参数2,返回一个名为Temp的临时文件夹
Set tempName = fso.GetSpecialFolder(2)
MoveFolder的使用
方法名:MoveFolder(source,destination)
说明:将一个或多个文件夹从某位置移动到另一位置。详细说明请查看表4。
call MoveFolders(sourcepath,destination)
Sub MoveFolders(sourcepath,destination)
Set fso = CreateObject("Scripting.FileSystemObject")
'使用MoveFolder方法,将testing文件夹的内容移动到123文件夹下
fso.MoveFolder sourcepath,destination
注:如果脚本在运行前文件夹123已存在,则运行是会发生错误;在不同的磁盘下MoveFolder方法不能用
上面提到的Folder方法是基于FileSystemObject 对象的,现在我们来看看基于Folder对象的方法。
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
Call FolderAttributes(sourcepath)
Sub FolderAttributes(sourcepath)
Set fso = CreateObject("Scripting.FileSystemObject")
Set objset = fso.getFolder(sourcepath)
Delete的使用
Call FolderAttributes(sourcepath)
Sub FolderAttributes(sourcepath)
Set fso = CreateObject("Scripting.FileSystemObject")
Set objset = fso.getFolder(sourcepath)
备注:如果文件夹属性为只读且Delete的参数为False,则脚本在运行是将提示“没有权限”;当文件夹不存在时,将提示“路径未找到”。
Move的使用
说明:将文件夹及里面所有的内容移动到 destination 指定的文件夹。详细说明请见表5
Call FolderAttributes(sourcepath)
Sub FolderAttributes(sourcepath)
Set fso = CreateObject("Scripting.FileSystemObject")
Set objset = fso.getFolder(sourcepath)
'使用Move()将testing文件夹及里面所有的内容,移动到目标文件夹123中
备注:如果目标文件夹123已存在,则脚本运行时提示“文件已存在”;如果目标文件夹123在D:/,则脚本运行使提示“没有权限”
CreateTextFile的使用
方法名:CreateTextFile(filename,overwrite,unicode)
说明:创建指定文件并返回 TextStream 对象,该对象可用于读或写创建的文件。详细说明请见表5。
Call FolderAttributes(sourcepath)
Sub FolderAttributes(sourcepath)
Set fso = CreateObject("Scripting.FileSystemObject")
Set objset = fso.getFolder(sourcepath)
'在testing文件夹下,使用CreateTextFile()创建myClass2.doc文件
objset.CreateTextFile "myClass2.doc",true
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”) |
Set objfso = createobject("Scripting.FileSystemObject")
Set objset = objfso.GetFolder("C:/testing")
Drive、DateCreated、Name属性的使用
Call FolderAttributes(sourcepath)
Sub FolderAttributes(sourcepath)
Set fso = CreateObject("Scripting.FileSystemObject")
Set objset = fso.getFolder(sourcepath)
SubFolers属性的使用
sourcepath = "C:/Program Files/Common Files"
Call FolderAttributes(sourcepath)
Sub FolderAttributes(sourcepath)
Dim fso,objset,objFolders,FolderName,i
Set fso = CreateObject("Scripting.FileSystemObject")
Set objset = fso.getFolder(sourcepath)
'SubFolders属性将返回所有子文件夹对应的Folder集合
Set objFolders = objset.SubFolders
'遍历Folder集合,统计出共有多少个文件夹,及相关文件夹的名字
For Each objFolder in objFolders
FolderName = FolderName + objFolder.Name + vbcr
msgbox ("共有" & i &"个文件夹,文件夹的名字为:" & FolderName)
Files属性的使用
Dim objFso,objGetFolder,intCount,strFileName
Set objFso= CreateObject("Scripting.FileSystemObject")
Set objGetFolder = objFso.GetFolder("C:/test")
For Each strFile in objGetFolder.Files
strFileName =strFileName & "第" & intCount & "个文件夹名为:" & strFile.Name & vbcr
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 指定的目的文件夹。
sourcepath = "C:/testing/*.txt"
Call FolderAttributes(sourcepath,targetpath)
Sub FolderAttributes(sourcepath,targetpath)
Set fso = CreateObject("Scripting.FileSystemObject")
'将testing文件夹下所有扩展名名为.txt的文件,复制到123文件夹下
fso.CopyFile sourcepath,targetpath
fso.MoveFile sourcepath,targetpath
备注:如果C:/123文件夹不存在,则脚本运行时提示“路径不存在”
CreateTextFile及DeleteFile的使用
方法名:CreateTextFile(filename,overwrite,unicode)
说明:创建指定文件并返回 TextStream 对象,该对象可用于读或写创建的文件。
sourcepath = "C:/testing/ myClass2.doc "
Call FolderAttributes(sourcepath)
Sub FolderAttributes(sourcepath)
Set fso = CreateObject("Scripting.FileSystemObject")
'在testing文件夹下,使用CreateTextFile()创建myClass2.doc文件
fso.CreateTextFile sourcepath,true
fso.DeleteFile sourcepath,true
备注:如果所删除的文件为只读属性且DeleteFile()的参数为false的话,则脚本运行是出现“没有权限”FileExists的使用
说明:判断所指定的文件是否存在。此方法将返回Bool值. 详细说明请见表7.
sourcepath = "C:/testing/test.txt"
Call FolderAttributes(sourcepath)
Sub FolderAttributes(sourcepath)
Set fso = CreateObject("Scripting.FileSystemObject")
'判断C:/testing/test.txt是否有存在,如果存在返回“true”;否则返回“false”
If fso.FileExists(sourcepath) Then
GetBaseName、GetFileName及GetExtensionName的使用
说明:返回字符串,文件 (不带扩展名), 或者提供的路径说明中的文件夹。
方法名:GetExtensionName(filespec)
说明:返回字符串,该字符串包含路径最后一个组成部分的扩展名。
说明:返回指定路径(不是指定驱动器路径部分)的最后一个文件或文件夹。
sourcepath = "C:/testing/test.txt"
Call FolderAttributes(sourcepath)
Sub FolderAttributes(sourcepath)
Set fso = CreateObject("Scripting.FileSystemObject")
'返回文件名test, 扩展名 txt, 文件名+扩展名 test.txt
Msgbox (fso.GetBaseName(sourcepath))
Msgbox (fso. GetExtensionName(sourcepath))
Msgbox (fso.GetFileName(sourcepath))
GetFile的使用
说明:返回与指定路径中某文件相应的 File 对象,既而可以访问到File的属性。
sourcepath = "C:/testing/778899.txt"
Call FolderAttributes(sourcepath)
Sub FolderAttributes(sourcepath)
Set fso = CreateObject("Scripting.FileSystemObject")
'调用GetFile()返回File对象,通过File对象来访问其下的属性
set objFile = fso.GetFile(sourcepath)
reporter.ReportEvent micDone,"访问file的属性","该文件所在的盘符为:" & objFile.Drive & " 文件名为:" & objFile.Name
GetTempName的使用
说明:返回随机生成的临时文件或文件夹的名称,用于执行要求临时文件或文件夹的操作
Set fso = CreateObject("Scripting.FileSystemObject")
'调用CreateTempFile函数,并将对象赋值给tempfile
'GetSpecialFolder()中的参数2,返回一个名为Temp的临时文件夹
Set tfolder = fso.GetSpecialFolder(TemporaryFolder)
Set tfile = tfolder.CreateTextFile(tname)
OpenTextFile的使用
方法名:(filename,iomode,create,format)
说明:打开指定的文件并返回一个 TextStream 对象,可以读取、写入此对象或将其追加到文件。详细的说明见表7.
'三个参数的分别为:以只读模式打开文件、以只写方式打开文件、打开文件并在文件末尾进行写操作
Const intForReading = 1,intForWriting = 2,intForAppending = 8
Call OpenTextFileTest(spec,intForAppending)
Sub OpenTextFileTest(sepc,intForAppending)
Set fso = CreateObject("Scripting.FileSystemObject")
'参数true表示:如果文件不存在,则创建文件。最后OpenTextFile()将返回TextStream对象
Set objTStream = fso.OpenTextFile(sepc,intForAppending,true)
objTStream.write "hello word!"
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对象属性。
sourcepath = "C:/testing/778899.txt"
Call FolderAttributes(sourcepath)
Sub FolderAttributes(sourcepath)
Set fso = CreateObject("Scripting.FileSystemObject")
'调用GetFile()返回File对象,通过File对象来访问其下的属性
set objFile = fso.GetFile(sourcepath)
reporter.ReportEvent micDone,"访问file的属性","该文件所在的盘符为:" & objFile.Drive & " 文件名为:" & objFile.Name
备注:File对象属性的使用方法和前面介绍的Folder对象属性的使用方法一样,所以在这不一一列出。
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的使用
strText = "This is Test !" & vbCrLf & “hello word !”
Call CreateFile(strPath,strText)
Sub CreateFile(strPath,strText)
Set objFso = CreateObject("Scripting.FileSystemObject")
'使用FileSystemObject对象的CreateTextFile(),来返回一个TextStream对象句柄
Set objStream = objFso.CreateTextFile(strPath,True)
'三个Write的意思分别为:在文本中写入字符、写入带换行符的字符、写入3个换行符
Read、ReadAll及ReadLine的使用
说明:从 TextStream 文件中读入指定数目的字符并返回结果字符串。
说明:读入全部 TextStream 文件并返回结果字符串。
说明:从 TextStream 文件中读入一整行字符(直到下一行,但不包括下一行字符),并返回结果字符串。
Sub CreateFile(strPath,strText)
Set objFso = CreateObject("Scripting.FileSystemObject")
'使用FileSystemObject对象的CreateTextFile(),来返回一个TextStream对象句柄
Set objStream = objFso.CreateTextFile(strPath,True)
Set objStream = objFso.OpenTextFile(strPath,1,true)
' msgbox (objStream.Read(Len(strText)))
Skip、SkipLine的使用
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)
备注:两者的区别是:Skip——跳过指定的几个字符;SkipLine——跳过一行
二、TextStream对象的属性
TextStream 的属性提供有关文件内文件指针当前位置的信息,如表9所示。注意,所有的属性是只读的。
表10 TextStream 对象的属性及说明 |
|
属性 |
说明 |
AtEndOfLine |
如果文件位置指针在文件中一行的末尾则返回 True |
AtEndOfStream |
如果文件位置指针在文件的末尾则返回 True |
Column |
从 1 开始返回文件中当前字符的列号 |
Line |
从 1 开始返回文件中当前行的行号” |
AtEndOfLine 和 AtEndOfStream 属性仅对以 iomode 参数为 ForReading 的方式打开的文件可用,否则将会出错。
AtEndOfLine及AtEndOfStream的使用
Set objFso = CreateObject("Scripting.FileSystemObject")
Set objStream = objFso.OpenTextFile(strPath,1,true)
Do While objStream.AtEndOfLine <> true
‘Do While objStream.AtEndOfStream <> true
备注:两者间的区别是:AtEndOfLine——读取到当前文本行的末尾;AtEndOfStream——读取到整个文本的末尾
Column及Line的使用
Set objFso = CreateObject("Scripting.FileSystemObject")
Set objTStream = objFso.OpenTextFile(strPath,1)
Do While objTStream.AtEndOfStream <> true
str = str + "共有" & objTStream.Line & "行数据,光标最后所在列号为:" & objTStream.Column & vbCrLf
下面是转摘的关于FileSystemObject的详细介绍,TextStream是其中的一个子对象。
前言
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 对象,可以在服务器上产生一个驱动器列表,与通过检查每个可能的驱动器字母来判别驱动器是否存在的方法相比,效率更高。我们也可以得到关于该驱动器的信息。
Set objFSO = CreateObject("Scripting.FileSystemObject")
For Each objDrive in colDrives
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 "
reporter.ReportEvent micDone ,"遍历Drives集合",msg
二、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的使用
说明:如果在 drivespec 中指定的驱动器存在,则返回 True,否则返回 False。drivespec 参数可以是一个驱动器字母,或者是文件、文件夹的完整绝对路径
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
另外,如果已知要访问的驱动器、文件夹或文件。可以直接对其使用 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。
Set objfso = createobject("scripting.FileSystemObject")
objfso.CopyFolder "D:/test","c:/123"
CreateFolder及DeleteFolder的使用
方法名:CreateFolder(foldername)/DeleteFolder(folderspec,force)
说明:创建/删除一个路径名为 foldername 的文件夹。详细说明请查看表4。
Set objfso = createobject("scripting.FileSystemObject")
‘ 在c:/创建new folder文件夹,如果文件夹存在,则会出现错误提示
objfso.CreateFolder("c:/new folder")
objfso.DeleteFolder("c:/new folder")
注:DeleteFolder无论文件夹是否包含内容,都将删除该文件夹
FolderExists的使用
说明:如果指定的文件夹存在,则返回 True;否则返回 False。详细说明请查看表4。
Set objfso = CreateObject("Scripting.FileSystemObject")
If Not objfso.FolderExists(strpath) Then
objset = objfso.CreateFolder(strpath)
objset = objfso.DeleteFolder(strpath)
GetAbsolutePathName的使用
方法名:GetAbsolutePathName(pathspec)
说明:从提供的指定路径中返回完整且含义明确的路径。详细说明请查看表4。
Set objfso = createobject("Scripting.FileSystemObject")
msgbox (objfso.GetAbsolutePathName(""))
msgbox (objfso.GetAbsolutePathName("C:"))
GetFolder的使用
说明:返回与指定的路径中某文件夹相应的 Folder 对象。可以根据所返回的Folder 对象,再去访问该Folder 对象所持有的属性。
Set objfso = createobject("Scripting.FileSystemObject")
Set objset = objfso.GetFolder("C:/testing")
GetParentFolderName的使用
方法名:GetParentFolderName(pathspec)
说明:返回字符串,该字符串包含指定的路径中最后一个文件或文件夹的父文件夹。
Set objfso = createobject("Scripting.filesystemobject")
'使用GetParentFolderName方法来返回上一层文件夹
msgbox (objfso.GetParentFolderName("C:/WINDOWS/addins"))
GetSpecialFolder的使用
方法名:GetSpecialFolder(folderspec)
Set fso = CreateObject("Scripting.FileSystemObject")
'GetSpecialFolder()中的参数2,返回一个名为Temp的临时文件夹
Set tempName = fso.GetSpecialFolder(2)
MoveFolder的使用
方法名:MoveFolder(source,destination)
说明:将一个或多个文件夹从某位置移动到另一位置。详细说明请查看表4。
call MoveFolders(sourcepath,destination)
Sub MoveFolders(sourcepath,destination)
Set fso = CreateObject("Scripting.FileSystemObject")
'使用MoveFolder方法,将testing文件夹的内容移动到123文件夹下
fso.MoveFolder sourcepath,destination
注:如果脚本在运行前文件夹123已存在,则运行是会发生错误;在不同的磁盘下MoveFolder方法不能用
上面提到的Folder方法是基于FileSystemObject 对象的,现在我们来看看基于Folder对象的方法。
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
Call FolderAttributes(sourcepath)
Sub FolderAttributes(sourcepath)
Set fso = CreateObject("Scripting.FileSystemObject")
Set objset = fso.getFolder(sourcepath)
Delete的使用
Call FolderAttributes(sourcepath)
Sub FolderAttributes(sourcepath)
Set fso = CreateObject("Scripting.FileSystemObject")
Set objset = fso.getFolder(sourcepath)
备注:如果文件夹属性为只读且Delete的参数为False,则脚本在运行是将提示“没有权限”;当文件夹不存在时,将提示“路径未找到”。
Move的使用
说明:将文件夹及里面所有的内容移动到 destination 指定的文件夹。详细说明请见表5
Call FolderAttributes(sourcepath)
Sub FolderAttributes(sourcepath)
Set fso = CreateObject("Scripting.FileSystemObject")
Set objset = fso.getFolder(sourcepath)
'使用Move()将testing文件夹及里面所有的内容,移动到目标文件夹123中
备注:如果目标文件夹123已存在,则脚本运行时提示“文件已存在”;如果目标文件夹123在D:/,则脚本运行使提示“没有权限”
CreateTextFile的使用
方法名:CreateTextFile(filename,overwrite,unicode)
说明:创建指定文件并返回 TextStream 对象,该对象可用于读或写创建的文件。详细说明请见表5。
Call FolderAttributes(sourcepath)
Sub FolderAttributes(sourcepath)
Set fso = CreateObject("Scripting.FileSystemObject")
Set objset = fso.getFolder(sourcepath)
'在testing文件夹下,使用CreateTextFile()创建myClass2.doc文件
objset.CreateTextFile "myClass2.doc",true
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”) |
Set objfso = createobject("Scripting.FileSystemObject")
Set objset = objfso.GetFolder("C:/testing")
Drive、DateCreated、Name属性的使用
Call FolderAttributes(sourcepath)
Sub FolderAttributes(sourcepath)
Set fso = CreateObject("Scripting.FileSystemObject")
Set objset = fso.getFolder(sourcepath)
SubFolers属性的使用
sourcepath = "C:/Program Files/Common Files"
Call FolderAttributes(sourcepath)
Sub FolderAttributes(sourcepath)
Dim fso,objset,objFolders,FolderName,i
Set fso = CreateObject("Scripting.FileSystemObject")
Set objset = fso.getFolder(sourcepath)
'SubFolders属性将返回所有子文件夹对应的Folder集合
Set objFolders = objset.SubFolders
'遍历Folder集合,统计出共有多少个文件夹,及相关文件夹的名字
For Each objFolder in objFolders
FolderName = FolderName + objFolder.Name + vbcr
msgbox ("共有" & i &"个文件夹,文件夹的名字为:" & FolderName)
Files属性的使用
Dim objFso,objGetFolder,intCount,strFileName
Set objFso= CreateObject("Scripting.FileSystemObject")
Set objGetFolder = objFso.GetFolder("C:/test")
For Each strFile in objGetFolder.Files
strFileName =strFileName & "第" & intCount & "个文件夹名为:" & strFile.Name & vbcr
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 指定的目的文件夹。
sourcepath = "C:/testing/*.txt"
Call FolderAttributes(sourcepath,targetpath)
Sub FolderAttributes(sourcepath,targetpath)
Set fso = CreateObject("Scripting.FileSystemObject")
'将testing文件夹下所有扩展名名为.txt的文件,复制到123文件夹下
fso.CopyFile sourcepath,targetpath
fso.MoveFile sourcepath,targetpath
备注:如果C:/123文件夹不存在,则脚本运行时提示“路径不存在”
CreateTextFile及DeleteFile的使用
方法名:CreateTextFile(filename,overwrite,unicode)
说明:创建指定文件并返回 TextStream 对象,该对象可用于读或写创建的文件。
sourcepath = "C:/testing/ myClass2.doc "
Call FolderAttributes(sourcepath)
Sub FolderAttributes(sourcepath)
Set fso = CreateObject("Scripting.FileSystemObject")
'在testing文件夹下,使用CreateTextFile()创建myClass2.doc文件
fso.CreateTextFile sourcepath,true
fso.DeleteFile sourcepath,true
备注:如果所删除的文件为只读属性且DeleteFile()的参数为false的话,则脚本运行是出现“没有权限”FileExists的使用
说明:判断所指定的文件是否存在。此方法将返回Bool值. 详细说明请见表7.
sourcepath = "C:/testing/test.txt"
Call FolderAttributes(sourcepath)
Sub FolderAttributes(sourcepath)
Set fso = CreateObject("Scripting.FileSystemObject")
'判断C:/testing/test.txt是否有存在,如果存在返回“true”;否则返回“false”
If fso.FileExists(sourcepath) Then
GetBaseName、GetFileName及GetExtensionName的使用
说明:返回字符串,文件 (不带扩展名), 或者提供的路径说明中的文件夹。
方法名:GetExtensionName(filespec)
说明:返回字符串,该字符串包含路径最后一个组成部分的扩展名。
说明:返回指定路径(不是指定驱动器路径部分)的最后一个文件或文件夹。
sourcepath = "C:/testing/test.txt"
Call FolderAttributes(sourcepath)
Sub FolderAttributes(sourcepath)
Set fso = CreateObject("Scripting.FileSystemObject")
'返回文件名test, 扩展名 txt, 文件名+扩展名 test.txt
Msgbox (fso.GetBaseName(sourcepath))
Msgbox (fso. GetExtensionName(sourcepath))
Msgbox (fso.GetFileName(sourcepath))
GetFile的使用
说明:返回与指定路径中某文件相应的 File 对象,既而可以访问到File的属性。
sourcepath = "C:/testing/778899.txt"
Call FolderAttributes(sourcepath)
Sub FolderAttributes(sourcepath)
Set fso = CreateObject("Scripting.FileSystemObject")
'调用GetFile()返回File对象,通过File对象来访问其下的属性
set objFile = fso.GetFile(sourcepath)
reporter.ReportEvent micDone,"访问file的属性","该文件所在的盘符为:" & objFile.Drive & " 文件名为:" & objFile.Name
GetTempName的使用
说明:返回随机生成的临时文件或文件夹的名称,用于执行要求临时文件或文件夹的操作
Set fso = CreateObject("Scripting.FileSystemObject")
'调用CreateTempFile函数,并将对象赋值给tempfile
'GetSpecialFolder()中的参数2,返回一个名为Temp的临时文件夹
Set tfolder = fso.GetSpecialFolder(TemporaryFolder)
Set tfile = tfolder.CreateTextFile(tname)
OpenTextFile的使用
方法名:(filename,iomode,create,format)
说明:打开指定的文件并返回一个 TextStream 对象,可以读取、写入此对象或将其追加到文件。详细的说明见表7.
'三个参数的分别为:以只读模式打开文件、以只写方式打开文件、打开文件并在文件末尾进行写操作
Const intForReading = 1,intForWriting = 2,intForAppending = 8
Call OpenTextFileTest(spec,intForAppending)
Sub OpenTextFileTest(sepc,intForAppending)
Set fso = CreateObject("Scripting.FileSystemObject")
'参数true表示:如果文件不存在,则创建文件。最后OpenTextFile()将返回TextStream对象
Set objTStream = fso.OpenTextFile(sepc,intForAppending,true)
objTStream.write "hello word!"
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对象属性。
sourcepath = "C:/testing/778899.txt"
Call FolderAttributes(sourcepath)
Sub FolderAttributes(sourcepath)
Set fso = CreateObject("Scripting.FileSystemObject")
'调用GetFile()返回File对象,通过File对象来访问其下的属性
set objFile = fso.GetFile(sourcepath)
reporter.ReportEvent micDone,"访问file的属性","该文件所在的盘符为:" & objFile.Drive & " 文件名为:" & objFile.Name
备注:File对象属性的使用方法和前面介绍的Folder对象属性的使用方法一样,所以在这不一一列出。
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的使用
strText = "This is Test !" & vbCrLf & “hello word !”
Call CreateFile(strPath,strText)
Sub CreateFile(strPath,strText)
Set objFso = CreateObject("Scripting.FileSystemObject")
'使用FileSystemObject对象的CreateTextFile(),来返回一个TextStream对象句柄
Set objStream = objFso.CreateTextFile(strPath,True)
'三个Write的意思分别为:在文本中写入字符、写入带换行符的字符、写入3个换行符
Read、ReadAll及ReadLine的使用
说明:从 TextStream 文件中读入指定数目的字符并返回结果字符串。
说明:读入全部 TextStream 文件并返回结果字符串。
说明:从 TextStream 文件中读入一整行字符(直到下一行,但不包括下一行字符),并返回结果字符串。
Sub CreateFile(strPath,strText)
Set objFso = CreateObject("Scripting.FileSystemObject")
'使用FileSystemObject对象的CreateTextFile(),来返回一个TextStream对象句柄
Set objStream = objFso.CreateTextFile(strPath,True)
Set objStream = objFso.OpenTextFile(strPath,1,true)
' msgbox (objStream.Read(Len(strText)))
Skip、SkipLine的使用
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)
备注:两者的区别是:Skip——跳过指定的几个字符;SkipLine——跳过一行
二、TextStream对象的属性
TextStream 的属性提供有关文件内文件指针当前位置的信息,如表9所示。注意,所有的属性是只读的。
表10 TextStream 对象的属性及说明 |
|
属性 |
说明 |
AtEndOfLine |
如果文件位置指针在文件中一行的末尾则返回 True |
AtEndOfStream |
如果文件位置指针在文件的末尾则返回 True |
Column |
从 1 开始返回文件中当前字符的列号 |
Line |
从 1 开始返回文件中当前行的行号” |
AtEndOfLine 和 AtEndOfStream 属性仅对以 iomode 参数为 ForReading 的方式打开的文件可用,否则将会出错。
AtEndOfLine及AtEndOfStream的使用
Set objFso = CreateObject("Scripting.FileSystemObject")
Set objStream = objFso.OpenTextFile(strPath,1,true)
Do While objStream.AtEndOfLine <> true
‘Do While objStream.AtEndOfStream <> true
备注:两者间的区别是:AtEndOfLine——读取到当前文本行的末尾;AtEndOfStream——读取到整个文本的末尾
Column及Line的使用
Set objFso = CreateObject("Scripting.FileSystemObject")
Set objTStream = objFso.OpenTextFile(strPath,1)
Do While objTStream.AtEndOfStream <> true
str = str + "共有" & objTStream.Line & "行数据,光标最后所在列号为:" & objTStream.Column & vbCrLf
VBS中FileSystemObject对象详解相关推荐
- VBS之FileSystemObject对象详解
目录 FileSystemObject的创建 FileSystemObject对象的属性和方法 属性 方法 FileSystemObject对象文件/文件夹相关的操作 复制文件/文件夹 Copy Co ...
- VB FileSystemObject对象 详解
FileSystemObject对象被用来访问服务器上的文件系统.这个对象能够处理文件.文件夹和目录路径.用它来检索文件系统信息也是可能的. 下面的代码创建了一个文本文件,并写入了一些文本: < ...
- java中class_Java中Class对象详解
https://blog.csdn.net/mcryeasy/article/details/52344729 待优化整理 总结 Class类简介 在java世界里,一切皆对象.从某种意义上来说,ja ...
- java中Class对象详解
java中把生成Class对象和实例对象弄混了,更何况生成Class对象和生成instance都有多种方式.所以只有弄清其中的原理,才可以深入理解.首先要生成Class对象,然后再生成Instanc ...
- java 中 class 对象_java中Class对象详解
java中把生成Class对象和实例对象弄混了,更何况生成Class对象和生成instance都有多种方式.所以只有弄清其中的原理,才可以深入理解.首先要生成Class对象,然后再生成Instance ...
- JavaScript中 FormData 对象详解
简介: FormData 对象用以将数据编译成键值对,以便用 XMLHttpRequest 来发送数据. 主要用于:发送表单数据,也可用于发送带键数据(keyed data),而独立于表单使用. 如果 ...
- java中Class对象详解和类名.class, class.forName(), getClass()区别
一直在想.class和.getClass()的区别,思索良久,有点思绪,然后有网上搜了搜,找到了如下的一篇文章,与大家分享. 原来为就是涉及到Java的反射----- Java反射学习 所谓反射 ...
- jQuery中deferred对象详解
最近看看构建工具gulp,当看到promise时突然有点陌生,于是乎意外找到了大牛阮一峰的一篇文章,写的非常的通俗易懂,对延迟对象进行了很好的讲解,虽然写的比较早但是道理都一样. 以下为主要内容: 一 ...
- Javascript中的Document对象详解
Document对象详解 document 文挡对象 - JavaScript脚本语言描述 -------------------------------------------- ...
最新文章
- 英语写作学习笔录 task1 body
- Mac下python初学之Image库(PIL)
- 【AI不惑境】残差网络的前世今生与原理
- unity官方教程-TANKS(一)
- Hadoop中的问题–何时无法交付?
- 前端学习(3239):react生命周期setstate流程
- 自然语言处理 —— 2.4 嵌入矩阵
- springboot整合jwt_springBoot整合JWT使用
- 如何建议一个数据库内的定时任务
- 转: gob编解码
- 51. PHP 页面静态化(4)
- Spring 使用注解注入 学习(四)
- 01.FFmpeg下载以及安装
- 解除 网课失去焦点/离开页面 就自动暂停 的限制
- python自回归模型_21向量自回归模型
- 数分下第12讲(第9.6节) 梯度散度和旋度
- 教师档案管理信息系统
- 十八岁白帽子与“攻陷五角大楼”众测计划
- 写给大佬看的STP算法详细配置实验过程
- xlwings库的基本使用笔记