今天看了一些关于vbs FileSystemObject的资料,发现不够详细和完整。在这里,我们只是找到了一篇更好的文章。请整理一下,有需要的朋友可以参考一下。
FSO是文件系统对象或脚本的缩写。FileSystemObject,是IIS的内置组件,用于操作磁盘、文件夹或文本文件。FSO有许多对象、方法和属性。这里以举例的方式列出了常用的方法。注:《VBScript 语言参考》中的《JScript 语言参考》和《FileSystemObject 用户指南》是微软给出的FileSystemObject的完整引用。
FSO不能操作二进制文件。要操作二进制文件,请使用:ADODB。溪流
下面详细介绍FileSystemObject,TextStream是它的子对象。
前言
最近一直在学习VBScript,网上相关教程很多,但是大部分对象都是用ASP讲解的,对于没学过ASP的同学来说很郁闷。所以我打算把学习FileSystemObject和TextStream中常用的属性和方法写出来,供大家学习。请指出任何不恰当的地方。
注意:所有脚本都已经在QTP 9.0中测试过。
FileSystemObject对象概述
FileSystemObject的作用:它提供了对计算机文件系统的访问,并允许我们在代码中操作文本文件、文件夹和驱动器。FileSystemObject对象提供了一个属性和一系列方法,可用于操作由FileSystemObject对象实现的一些从属对象。这里提供了内容的完整摘要,然后介绍了每个从属对象。
一、FileSystemObject 对象的属性
FileSystemObject对象只有一个属性,用于获取当前计算机上所有有效驱动器的列表,如表1所示:
表1文件系统对象对象的属性和描述
属性
解释
司机
返回本地计算机可用的驱动器列表。
以下脚本可以获取FileSystemObject的Drivers属性。
Set objFSO=CreateObject('脚本。file system object’)
设置colDrivers=objFSO。司机
正如您已经看到的,FileSystemObject对象包含一个属性——Drives,它返回一个包含本地计算机上所有可用驱动器的集合。
Drives集合中的每个条目都是一个Drive对象。驱动对象的属性如表2所示:
表2驱动对象的属性和描述
方法
解释
可用空间
考虑到帐户配额和/或其他限制,将返回驱动器上可供用户使用的空间量。
驱动器号
返回驱动器的盘符。
驱动类型
返回驱动器的类型。返回值可以是Unknown(0)、removable (1)、Fixed(2)、Network(3)、CDRom(4)和RamDisk(5)。但是需要注意的是,目前版本的scrrun.dll不支持预定义的常数网络,所以必须用十进制3来代替。
文件系统
返回驱动器文件系统的类型。返回值包括“FAT”、“NTFS”和“CDFS”
自由空间
返回驱动器上剩余的可用空间总量。
IsReady
返回一个布尔值,表明驱动器是否就绪。
小路
返回由驱动器号和冒号组成的驱动器路径,例如“C:”
根文件夹
代表驱动器根文件夹的Folder对象。
序列号
返回用于标识磁盘卷的十进制序列号。
共享名
如果是网络驱动器,则返回该驱动器的网络共享名。
总尺寸
返回驱动器的总容量,以字节为单位。
卷名
或者设置返回本地驱动器卷名。
因此,通过使用Drives集合中的Drive对象,可以在服务器上生成驱动器列表,这比检查每个可能的驱动器号以确定驱动器是否存在的方法更有效。我们还可以获得有关该驱动器的信息。
示例:
创建FileSystemObject对象。
Set objFSO=CreateObject('脚本。file system object’)
创建Drives集合并将其分配给colDrives。
设置colDrives=objFSO。驱动
遍历驱动器集合。
对于colDrives中的每个对象驱动器
确定驱动器是否就绪。
如果objDrive。那就准备好了
Msg='驱动器的名称是:' objDrive。驱动器号“”
' Msg=msg '驱动器文件系统的类型:' objDrive。文件系统“”
Msg=msg '驱动器的总容量:' int(obj drive . Total size/(1024 * 1024 * 1024))' g '
Msg=msg '剩余空间总量:' int(obj drive . free space/(1024 * 1024 * 1024))' g '
如果…就会结束
然后
记者。ReportEvent micDone,“遍历驱动器集合”,消息
注意:在系统上运行这个程序之前,有一点需要注意。如果驱动器A中没有磁盘或CD-ROM驱动器中没有CD,您将得到一条错误消息:“磁盘未准备好”。除了DriveLetter属性和DriveType属性之外,还可以通过在使用其他属性和方法之前检查每个驱动器的IsReady属性来保护此页。
二、FileSystemObject 对象的方法
1.与驱动器相关的方法
表3与驱动程序相关的方法和描述
方法
解释
驱动存在(驱动规范)
如果drivespec中指定的驱动器存在,则返回True,否则返回False。Drivespec参数可以是驱动器号或文件和文件夹的完整绝对路径。
GetDrive(drivespec)
返回与drivespec指定的驱动器相对应的驱动器对象。Drivespec可以包含冒号、路径分隔符或网络共享名,即:" c "、" c:"、" c:"和"/machinesharename "
GetDriveName(drivespec)
用字符串返回由drivespec指定的驱动器的名称。Drivespec参数必须是文件或文件夹的绝对路径,或者只是一个驱动器号,例如:“C:”或“C”
DriveExists的使用
方法名:DriveExists(drivespec)
注意:如果drivespec中指定的驱动器存在,将返回True,否则将返回False。Drivespec参数可以是驱动器号或文件和文件夹的完整绝对路径。
示例:
创建FileSystemObject对象。
Set objFSO=CreateObject('脚本。file system object’)
对于intCode=65至90 'ANSI代码,适用于' A '至' Z '
StrLetter=Chr(intCode) 'Chr:返回与指定的ANSI字符代码相对应的字符。
Objfso。驱动器存在(str字母)然后判断相应的驱动器号是否存在,如果有输出。
记者。报告事件micDone,“显示驱动器”,“找到驱动器”strLetter
如果…就会结束
然后
此外,如果您知道要访问的驱动器、文件夹或文件。可以在上面直接使用GetDrive、GetFolder、GetSpecialFolder、GetFile方法。
2. 与文件夹有关的方法及属性
用FileSystemObject对象操作文件夹的方法:
表4与文件夹相关的方法和说明
方法
解释
构建路径(路径,名称)
将名为name的文件或文件夹添加到现有路径path中,如有必要,添加路径分隔符“”
复制文件夹(源、目标、覆盖)
将一个或多个文件夹从指定的源文件夹(可以包含通配符)复制到指定的目标文件夹,包括源文件夹中的所有文件。如果源包含通配符或目标的结尾是路径分隔符(“”),则目标被视为将放置源文件夹副本的文件夹。否则,将destination视为要创建的新文件夹的路径名。如果目标文件夹已经存在,并且overwrite参数设置为False,将会生成错误,默认overwrite参数为True。
创建文件夹(文件夹名)
创建路径名为foldername的文件夹。如果foldername已经存在,将会生成一个错误。
DeleteFolder(folderspec,force)
删除folderspec指定的一个或多个文件夹(可以在路径的最后部分包含一个pass符号)以及文件夹中的所有内容。如果可选的force参数设置为true,文件夹将被删除,即使它包含的文件是只读的。默认的force参数为False。
文件夹存在(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(源,目标)
将源指定的一个或多个文件夹移动到目标指定的文件夹。通配符可以包含在源中,但不能包含在目标中。如果源包含通配符或路径分隔符(“”)位于目标的末尾,则目标被视为要放置源文件夹的文件夹。否则,它将被视为新文件夹的完整路径和名称。如果目标文件夹目标已经存在,则会生成错误。
CopyFolder的使用
方法名:copyfolder(源、目标、覆盖)
描述:递归复制文件夹从一个位置到另一个位置。详情请参考表4。
示例:
创建FileSystemObject对象。
Set objfso=createobject('脚本。file system object’)
将D:/test下的所有内容复制到c:/123
objfso。复制文件夹' D:/test ',' c:/123 '
注意:如果c:/123不存在,QTP将自动创建它。
CreateFolder及DeleteFolder的使用
方法:create folder(foldername)/delete folder(folder spec,force)
描述:创建/删除路径名为foldername的文件夹。详情请参考表4。
示例:
创建FileSystemObject对象。
Set objfso=createobject('脚本。file system object’)
在c:/中创建一个新文件夹。如果该文件夹存在,将会出现一条错误消息。
objfso。create folder(' c:/新文件夹')
删除c:/new folder文件夹
objfso。delete folder(“c:/new folder”)
注意:DeleteFolder将删除文件夹,不管它是否包含内容。
FolderExists的使用
方法名:FolderExist(folderspec)
描述:返回True如果指定的文件夹存在;否则,返回False。详情请参考表4。
示例:
函数汉书(strpath)
Dim objfso,objset
创建FileSystemObjec对象
Set objfso=CreateObject('脚本。file system object’)
确定指定路径中是否有。
如果不是objfso。文件夹存在(strpath)
objset=objfso。创建文件夹(strpath)
其他
objset=objfso。删除文件夹(strpath)
如果…就会结束
汉书=objset
结束功能
汉书(' c:/新文件夹')
GetAbsolutePathName的使用
方法名:GetAbsolutePathName(pathspec)
描述:从提供的指定路径中返回一个完整且有意义的路径。详情请参考表4。
示例:
Dim objfso
创建FileSystemObject对象
Set objfso=createobject('脚本。file system object’)
返回当前目录,下面两条语句返回相同的结果。
msgbox (objfso。GetAbsolutePathName(' '))
msgbox (objfso。GetAbsolutePathName('C:'))
GetFolder的使用
方法名:GetFolder(folderspec)
描述:返回与指定路径中的文件夹对应的Folder对象。可以根据返回的Folder对象访问Folder对象持有的属性。
示例:
Dim objfso,objset
创建FileSystemObject对象。
Set objfso=createobject('脚本。file system object’)
返回C:/testing文件夹的对象。
Set objset=objfso。GetFolder('C:/testing ')
根据返回的文件夹对象,访问其相关属性。
记者。报告事件Micdone,'文件夹对象的相关属性','文件夹创建日期:' objset。“创建日期”;该文件夹位于驱动器:' objset。驱动';文件夹的名称:“objset”。名字
注意:文件夹对象的属性将在下面详细描述。
GetParentFolderName的使用
方法:GetParentFolderName(pathspec)
描述:返回一个字符串,该字符串包含指定路径中最后一个文件或文件夹的父文件夹。
示例:
Dim objfso
创建FileSystemObject对象。
set objfso=createobject(' scripting . file system object ')
使用GetParentFolderName方法返回到上一个文件夹。
msgbox (objfso。GetParentFolderName(' C:/WINDOWS/addins '))
GetSpecialFolder的使用
方法名:GetSpecialFolder(folderspec)
描述:返回指定的特殊文件夹。详情请参考表4。
示例:
Dim fso,临时名称
Set fso=CreateObject('脚本。file system object’)
' GetSpecialFolder()中的参数2返回一个名为temp的临时文件夹。
设置tempName=fso。GetSpecialFolder(2)
msgbox临时名称
MoveFolder的使用
方法:MoveFolder(源,目标)
描述:将一个或多个文件夹从一个位置移动到另一个位置。详情请参考表4。
示例:
Dim源路径,目标
sourcepath='C:/testing '
destination='C:/123 '
调用MoveFolders方法。
调用MoveFolders(源路径,目标)
子移动文件夹(源路径,目标)
Dim fso
创建FileSystemObject对象。
Set fso=CreateObject('脚本。file system object’)
使用MoveFolder方法将testing文件夹的内容移动到123文件夹中。
fso。MoveFolder源路径,目标
末端接头
注意:如果脚本运行前文件夹123已经存在,运行时会出错;MoveFolder方法不能在不同的磁盘上使用。
上面提到的Folder方法基于FileSystemObject对象。现在让我们看看基于文件夹对象的方法。
Folder对象所提供的方法
Folder对象提供了一组可用于复制、删除和移动当前文件夹的方法。这些方法的操作方式与FileSystemObject对象的CopyFolder、DeleFolder和MoveFolder方法相同,但这些方法不需要source参数,因为源文件是该文件夹。
备注:CopyFolder、DeleFolder等方法基于FileSystemObject对象;下面的复制、删除等方法都是基于FileSystemObject对象下的Folder对象,功能也差不多。
表5文件夹对象的方法和描述
方法
解释
复制(目标,覆盖)
将此文件夹及其所有内容复制到destination指定的文件夹中。如果目的地的结尾是路径分隔符(“”),则目的地被认为是放置复制文件夹的文件夹。否则,认为destination是要创建的新文件夹的路径和名称。如果目标文件夹已经存在,并且overwrite参数设置为False,将会生成错误,默认overwrite参数为True。
删除(强制)
删除文件夹及其所有内容。如果可选的force参数设置为True,文件夹将被删除,即使它是只读的或包含只读文件。默认力为假。
移动(目的地)
将文件夹及其所有内容移动到destination指定的文件夹中。如果目的地的结尾是路径分隔符(“”),则目的地被视为放置移动文件夹的文件夹。否则,认为destination是新文件夹的路径和名称。如果目标文件夹已经存在,则会出现错误。
CreateTextFile(文件名,覆盖,unicode)
用指定的文件名在文件夹中创建一个新文件,并返回一个相应的TextStream对象。如果可选的overwrite参数设置为True,任何同名的现有文件都将被覆盖。默认覆盖参数为False。如果可选的unicode参数设置为True,文件的内容将存储为unicode文本。默认的unicode是False。
Copy的使用
方法:复制(目标,覆盖)
描述:将文件夹中的所有内容复制到目标文件夹中。详情见表5。
示例:
暗淡源路径
sourcepath='C:/testing '
调用文件夹属性(sourcepath)
子文件夹属性(源路径)
Dim fso,对象集
Set fso=CreateObject('脚本。file system object’)
使用GetFolder方法返回Folder对象。
set objset=FSO . getfolder(source path)
将测试中的所有内容复制到文件夹123。
目标集。复制(' d:/123 ')
末端接头
注意:如果目标文件夹不存在,脚本将在运行时自动创建。
Delete的使用
方法:删除(强制)
描述:删除文件夹及其所有内容。详情见表5。
示例:
暗淡源路径
sourcepath='C:/testing '
调用文件夹属性(sourcepath)
子文件夹属性(源路径)
Dim fso,对象集
Set fso=CreateObject('脚本。file system object’)
使用GetFolder方法返回Folder对象。
set objset=FSO . getfolder(source path)
删除testingw文件夹和文件夹中的所有内容。
目标集。删除(真)
末端接头
注意:如果文件夹属性为只读,Delete参数为False,脚本运行时会提示“无权限”;当文件夹不存在时,会提示“找不到路径”。
Move的使用
方法:移动(目的地)
描述:将文件夹及其所有内容移动到destination指定的文件夹中。详情见表5。
示例:
暗淡源路径
sourcepath='C:/testing '
调用文件夹属性(sourcepath)
子文件夹属性(源路径)
Dim fso,对象集
Set fso=CreateObject('脚本。file system object’)
使用GetFolder方法返回Folder对象。
set objset=FSO . getfolder(source path)
使用Move()将testing文件夹及其所有内容移动到目标文件夹123。
目标集。移动(' C:/123 ')
末端接头
注意:如果目标文件夹123已经存在,脚本运行时会提示“文件已经存在”;如果目标文件夹123在D:/,脚本运行以提示“无权限”
CreateTextFile的使用
方法名:createtextfile(文件名,覆盖,unicode)
描述:创建指定的文件并返回一个TextStream对象,该对象可用于读取或写入创建的文件。详情见表5。
示例:
暗淡源路径
sourcepath='C:/testing '
调用文件夹属性(sourcepath)
子文件夹属性(源路径)
Dim fso,对象集
Set fso=CreateObject('脚本。file system object’)
使用GetFolder方法返回Folder对象。
set objset=FSO . getfolder(source path)
在testing文件夹下,使用CreateTextFile()创建myClass2.doc文件。
目标集。CreateTextFile 'myClass2.doc ',true
末端接头
备注:CreateTextFile()创建的文件类型根据提供的扩展名确定,如myClass2.txt、myClass2.txt等。FileSystemObject对象也可以调用CreateTextFile(),我们可以将上面的代码改写为:
fso。create textfile " C:/testing/my class . doc ",true
Folder对象所提供的属性:
表6文件夹对象的属性和描述
属性
解释
属性
返回文件夹的属性。它可以是以下值之一或组合:正常(0)、只读(1)、隐藏(2)、系统(4)、卷(名称)(8)、目录(文件夹)(16)、存档(32)、别名(64)和压缩(128)。例如,属性值为3的隐藏只读文件。
创建日期
返回该文件夹的创建日期和时间。
DateLastAccessed
返回上次访问文件夹的日期和时间。
日期最后修改时间
返回上次修改文件夹的日期和时间。
驱动器
返回该文件夹所在驱动器的盘符。
文件
返回Folder对象中包含的Files集合,代表文件夹中的所有文件。
IsRootFolder
返回一个布尔值,表明该文件夹是否是当前驱动器的根文件夹。
名字
或者设置返回文件夹的名称。
父文件夹
返回与该文件夹的父文件夹相对应的Folder对象。
小路
使用相应的长文件名返回文件夹的绝对路径。
简称
返回DOS风格的8.3文件夹名。
捷径
返回DOS风格的8.3文件夹的绝对路径。
大小
返回该文件夹中包含的所有文件和子文件夹的大小。
子冷却器
返回与该文件夹中包含的所有子文件夹相对应的Folders集合,包括隐藏文件夹和系统文件夹。
类型
如果可能,返回文件夹的描述字符串(例如,“回收站”)
如上所述,我们可以使用下面的脚本来访问文件夹对象
Dim objfso,objset
创建FileSystemObject对象。
Set objfso=createobject('脚本。file system object’)
返回C:/testing文件夹的对象。
Set objset=objfso。GetFolder('C:/testing ')
注意:我们可以访问Folder对象提供的方法和属性。
驱动器、创建日期、名称属性的使用
示例:
暗淡源路径
sourcepath='C:/testing '
调用文件夹属性(sourcepath)
子文件夹属性(源路径)
Dim fso,对象集
Set fso=CreateObject('脚本。file system object’)
使用GetFolder方法返回Folder对象。
set objset=FSO . getfolder(source path)
通过Folder对象访问Folder属性。
记者。ReportEvent micDone,'测试文件夹属性','文件夹的磁盘是:' objset。“Drive”文件夹的创建日期:“objset。“创建日期”文件夹的名称是:“对象集”。名字
末端接头
SubFolers属性的使用
示例:
暗淡源路径
source path=' C:/程序文件/公共文件'
调用文件夹属性(sourcepath)
子文件夹属性(源路径)
Dim fso,objset,objFolders,FolderName,I
i=0
Set fso=CreateObject('脚本。file system object’)
使用GetFolder方法返回Folder对象。
set objset=FSO . getfolder(source path)
“子文件夹”属性将返回对应于所有子文件夹的文件夹集合。
Set objFolders=objset。子文件夹
遍历文件夹集合,计算出有多少个文件夹以及相关文件夹的名称。
对于objFolders中的每个objFolder
i=i 1
Vbcr是换行符。
FolderName=FolderName objFolder。名称vbcr
然后
Msgbox('总共有' I '个文件夹,文件夹名为:' FolderName ')
末端接头
Files属性的使用
示例:
Dim objFso,objGetFolder,intCount,strFileName
intCount=0
创建FileSystemObject对象。
Set objFso=CreateObject('脚本。file system object’)
使用GetFolder()获取文件夹对象。
设置objGetFolder=objFso。GetFolder('C:/test ')
遍历Files集合并显示文件夹中的所有文件名。
对于objGetFolder中的每个strFile。文件
intCount=intCount 1
str filename=str filename ' int count '文件夹被命名为:' strfilename.namevbcr。
然后
msgbox strFileName
3. 以文件有关的方法及属性
用FileSystemObject对象操作文件的方法:
表7与文件相关的方法和说明
方法
解释
拷贝文件(源、目标、覆盖)
将源(可能包含通配符)指定的一个或多个文件复制到指定的目标文件夹。如果源包含通配符或目标的结尾是路径分隔符(“”),则该目标被视为文件夹。否则,目标被视为新文件的完整路径和名称。如果目标文件夹已经存在,并且overwrite参数设置为False,将会生成错误。默认覆盖参数为True。
CreateTextFile(文件名,覆盖,unicode)
用指定的文件名在磁盘上创建一个新的文本文件,并返回相应的TextStream对象。如果可选的overwrite参数设置为True,则相同路径中同名的现有文件将被覆盖。默认覆盖参数为False。如果可选的unicode参数设置为True,文件的内容将存储为unicode文本,默认的Unicode参数为False。
DeleFile(filespec,force)
删除filespec指定的一个或多个文件(可以在路径的最后部分包含通配符)。如果可选的force参数设置为true,具有只读属性的文件也将被删除。默认的force参数为False。
文件存在(文件规格)
如果filespec指定的文件存在,则返回True,否则返回False。filespec参数可以包含文件的绝对或相对路径,或者当前文件夹中的文件名。
GetBaseName(filespec)
返回filespec指定的文件名,即包含文件路径但删除文件扩展名。
GetExtensionName(filespec)
返回由filespec指定的文件的扩展名。
获取文件(文件规格)
返回与filespec指定的文件对应的File对象。您可以指定文件的相对或绝对路径。
获取文件名(路径规格)
返回pathspec指定的文件的路径或文件名,如果没有文件名,则返回最后一个文件夹名。不要检查文件或文件夹是否存在。
GetTempName()
返回随机生成的文件名,该文件名用于完成操作所需的临时文件或文件夹。
MoveFile(源,目标)
将source指定的一个或多个源文件移动到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 SubRead、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 SubSkip、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 SubFileSystemObject实例代码
创建文件
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
好了,这篇文章就介绍到这里了,基本上内容就差不多了。希望大家以后多多支持我们。?
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。