新浪博客

FileSystemObject

2012-03-30 18:24阅读:
QTP帮助文档VBScript56.CHM->Script Runtime->FileSystemObject Object (C:\Program Files\QuickTest Professional\help,仅VBScript,翻译来源于网上)

FileSystemObject 对象模型

FileSystemObject (FSO) 对象模型,允许对大量的属性、方法和事件,使用较熟悉的 object.method 语法,来处理文件夹和文件。
使用这个基于对象的工具和:
  • HTML 来创建 Web
  • Windows Scripting Host 来为
Microsoft Windows 创建批文件
  • Script Control 来对用其他语言开发的应用程序提供编辑脚本的能力
因为在客户端使用 FSO 而引起重要的安全性问题,提供潜在地不受欢迎的对客户端本地文件系统的访问,假定本文档使用 FSO 对象模型,来创建由服务器端的 Internet Web 页执行的脚本。因为使用了服务器端,Internet Explorer 默认安全设置不允许客户端使用 FileSystemObject 对象。覆盖那些默认值可能会引起在本地计算机上不受欢迎的对其文件系统的访问,从而导致文件系统完整性的全部破坏,同时引起数据遗失或更糟的情况。
FSO 对象模型使服务器端的应用程序能创建、改变、移动和删除文件夹,或探测特定的文件夹是否存在,若存在,还可以找出有关文件夹的信息,如名称、被创建或最后一次修改的日期,等等。
FSO 对象模型还使文件处理变得很容易。在处理文件时,主要的目标是以易于访问的格式把数据存储在有效的空间和资源中。这就要求能够创建文件,插入和改变数据,以及输出(读取)数据。因为把数据存储在数据库中,如 AccessSQL 服务器,会给应用程序增加很大的开销,所以把数据存储在二进制或文本文件中可能是最有效的解决方案。可能不希望有该开销,或者数据访问要求可能不需要与功能完备的数据库相关联的所有额外功能。
  • 包含在 Scripting 类型库 (Scrrun.dll) 中的 FSO 对象模型,支持通过 TextStream 对象来创建和操作文本文件。虽然还不支持二进制文件的创建或操作,但计划将来要支持二进制文件。

FileSystemObject 对象

FileSystemObject(FSO) 对象模型包含下面的对象和集合。
对象/集合
描述
FileSystemObject
主对象。包含用来创建、删除和获得有关信息,以及通常用来操作驱动器、文件夹和文件的方法和属性。和该对象相关联的许多方法,与其他 FSO 对象中的方法完全相似;它们是为了方便才被提供的。
Drive
对象。包含用来收集信息的方法和属性,这些信息是关于连接在系统上的驱动器的,如驱动器的共享名和它有多少可用空间。请注意,'drive' 并非必须是硬盘,也可以是 CD-ROM 驱动器,RAM 磁盘等等。并非必须把驱动器实物地连接到系统上;它也可以通过网络在逻辑上被连接起来。
Drives
集合。提供驱动器的列表,这些驱动器实物地或在逻辑上与系统相连接。Drives 集合包括所有驱动器,与类型无关。要可移动的媒体驱动器在该集合中显现,不必把媒体插入到驱动器中。
File
对象。包含用来创建、删除或移动文件的方法和属性。也用来向系统询问文件名、路径和多种其他属性。
Files
集合。提供包含在文件夹内的所有文件的列表。
Folder
对象。包含用来创建、删除或移动文件夹的方法和属性。也用来向系统询问文件夹名、路径和多种其他属性。
Folders
集合。提供在 Folder 内的所有文件夹的列表。
TextStream
对象。用来读写文本文件。

设计 FileSystemObject

要用 FileSystemObject (FSO) 对象模型来编程,则:
  • 使用 CreateObject 方法来创建 FileSystemObject 对象。
  • 在新创建的对象上使用适当的方法。
  • 访问对象的属性。
FSO 对象模型包含在 Scripting 类型库中,该库位于 Scrrun.dll 文件中。因而,要使用 FSO 对象模型,必须把 Scrrun.dll 放在 Web 服务器的适当系统目录中。

创建 FileSystemObject 对象

首先,使用 CreateObject 方法来创建 FileSystemObject 对象。
下面代码显示如何创建 FileSystemObject 实例:
Dim fso
Set fso = CreateObject('Scripting.FileSystemObject')

在这两个示例中,Scripting 是类型库的名字,而 FileSystemObject 则是想要创建的对象的名字。可以只创建 FileSystemObject 对象的一个实例,而不管试图创建另一个实例的次数。
使用适当的方法
其次,使用 FileSystemObject 对象的适当方法。例如,要创建一个新的对象,则使用 CreateTextFileCreateFolderFSO 对象模型不支持驱动器的创建或删除)。
要删除对象,则使用 FileSystemObject 对象的 DeleteFileDeleteFolder 方法,或 FileFolder 对象的 Delete 方法。也可以使用适当的方法,来复制和移动文件与文件夹。
注意 FileSystemObject 对象模型中的某些功能是多余的。例如,可以用 FileSystemObject 对象的 CopyFile 方法,也可以用 File 对象的 Copy 方法来复制文件。这两种方法功能是相同的;两种方法都能使编程灵活。
访问现有驱动器、文件和文件夹
要访问现有驱动器、文件或文件夹,则使用 FileSystemObject 对象中的适当的 'get' 方法:
  • GetDrive
  • GetFolder
  • GetFile
若要访问现有文件:
Dim fso, f1
Set fso = CreateObject('Scripting.FileSystemObject')
Set f1 = fso.GetFile('c:\test.txt')

不要对新创建的对象使用 'get' 方法,因为 'create' 函数已经返回那个对象的一个句柄。例如,如果使用 CreateFolder 方法创建了一个新的文件夹,则不要使用 GetFolder 方法来访问它的属性,如 NamePathSize等等。只需设一个变量给 CreateFolder 函数,来获得新创建文件夹的句柄名,然后访问它的属性、方法和事件。
若要为 CreateFolder 函数创建变量,请使用该语法:
Sub CreateFolder
   Dim fso, fldr
   Set fso = CreateObject('Scripting.FileSystemObject')
   Set fldr = fso.CreateFolder('C:\MyTest')
   Response.Write 'Created folder: ' & fldr.Name
EndSub

访问对象的属性

一旦有了对象的句柄,就可以访问它的属性。例如,要获得特定文件夹的名字,首先创建该对象的一个实例,然后用适当的方法获得它的句柄(在这个例子中是 GetFolder 方法,因为该文件夹已经存在了)。
用该代码来获得 GetFolder 方法的一个句柄:
Set fldr = fso.GetFolder('c:\')
现在,已经有了 Folder 对象的句柄,就可以检查它的 Name 属性了。
Response.Write 'Folder name is: ' & fldr.Name
要找出最后一次修改文件的时间,则使用下面的语法:
Dim fso, f1
Set fso = CreateObject('Scripting.FileSystemObject')
' 
获得要查询的 File 对象。
Set f1 = fso.GetFile('c:\detlog.txt')   
' 
打印信息。
Response.Write 'File last modified: ' & f1.DateLastModified


处理驱动器和文件夹

使用 FileSystemObject (FSO) 对象模型,可以有计划地处理驱动器和文件夹,就像在 Windows 资源管理器中交互式地处理它们一样。可以复制和移动文件夹,获取有关驱动器和文件夹的信息,等等。

获取有关驱动器的信息

可以用 Drive 对象来获得有关各种驱动器的信息,这些驱动器是实物地或通过网络连接到系统上的。它的属性可以用来获得下面的信息内容:
  • 驱动器的总容量,以字节为单位(TotalSize 属性)
  • 驱动器的可用空间是多少,以字节为单位(AvailableSpace FreeSpace 属性)
  • 哪个号被赋给了该驱动器(DriveLetter 属性)
  • 驱动器的类型是什么,如可移动的、固定的、网络的、CD-ROM RAM 磁盘(DriveType 属性)
  • 驱动器的序列号(SerialNumber 属性)
  • 驱动器使用的文件系统类型,如 FATFAT32NTFS 等等(FileSystem 属性)
  • 驱动器是否可以使用(IsReady 属性)
  • 共享和/或卷的名字(ShareName VolumeName 属性)
  • 驱动器的路径或根文件夹(Path RootFolder 属性)
请考察示例代码,来领会如何在 FileSystemObject 中使用这些属性。

Drive 对象的用法示例

使用 Drive 对象来收集有关驱动器的信息。在下面的代码中,没有对实际的 Drive 对象的引用;相反,使用 GetDrive 方法来获得现有 Drive 对象的引用(在这个例子中就是 drv)。
下面示例示范了如何使用 Drive 对象:
Sub ShowDriveInfo(drvPath)
   Dim fso, drv, s
   Set fso = CreateObject('Scripting.FileSystemObject')
   Set drv = fso.GetDrive(fso.GetDriveName(drvPath))
   s = 'Drive ' & UCase(drvPath) & ' - '
   s = s & drv.VolumeName & '<br>'
   s = s & 'Total Space: ' & FormatNumber(drv.TotalSize / 1024, 0)
   s = s & ' Kb' & '<br>'
   s = s & 'Free Space: ' & FormatNumber(drv.FreeSpace / 1024, 0)
   s = s & ' Kb' & '<br>'
   Response.Write s
EndSub

处理文件夹

在下面的表中,描述了普通的文件夹任务和执行它们的方法。
任务
方法
创建文件夹。
FileSystemObject.CreateFolder
删除文件夹。
Folder.Delete FileSystemObject.DeleteFolder
移动文件夹。
Folder.Move FileSystemObject.MoveFolder
复制文件夹。
Folder.Copy FileSystemObject.CopyFolder
检索文件夹的名字。
Folder.Name
如果文件夹在驱动器上存在,则找出它。
FileSystemObject.FolderExists
获得现有 Folder 对象的实例。
FileSystemObject.GetFolder
找出文件夹的父文件夹名。
FileSystemObject.GetParentFolderName
找出系统文件夹的路径。
FileSystemObject.GetSpecialFolder

请考察示例代码,来看看在 FileSystemObject 中使用了多少种这些的方法和属性。
下面的示例示范了如何使用 FolderFileSystemObject 对象,来操作文件夹和获得有关它们的信息:
Sub ShowFolderInfo()
   Dim fso, fldr, s
   ' 
获取 FileSystemObject 的一个实例
   Set fso = CreateObject('Scripting.FileSystemObject')
   ' 
获取驱动器对象
   Set fldr = fso.GetFolder('c:')
   ' 
打印父文件夹名
   Response.Write 'Parent folder name is: ' & fldr & '<br>'
   ' 
打印驱动器名
   Response.Write 'Contained on drive ' & fldr.Drive & '<br>'
   ' 
打印根文件名
   If fldr.IsRootFolder = TrueThen
      Response.Write 'This is the root folder.' & ''<br>'<br>'
   Else
      Response.Write 'This folder isn't a root folder.' & '<br><br>'
   EndIf
   ' 
 FileSystemObject 对象新建文件夹
   fso.CreateFolder ('C:\Bogus')
   Response.Write 'Created folder C:\Bogus' & '<br>'
   ' 
打印文件夹的基本名
   Response.Write 'Basename = ' & fso.GetBaseName('c:\bogus') & '<br>'
   ' 
删除新建文件夹
   fso.DeleteFolder ('C:\Bogus')
   Response.Write 'Deleted folder C:\Bogus' & '<br>'
EndSub


处理文件

有两种主要的文件处理类型:
  • 创建、添加或删除数据,以及读取文件
  • 移动、复制和删除文件

创建文件

创建空文本文件(有时被叫做文本流)有三种方法。
第一种方法是用 CreateTextFile 方法。下面的示例示范了如何用 CreateTextFile 方法创建文本文件:

Dim fso, f1
Set fso = CreateObject('Scripting.FileSystemObject')
Set f1 = fso.CreateTextFile('c:\testfile.txt', True)
创建文本文件的第二种方法是,使用 FileSystemObject 对象的 OpenTextFile 方法,并设置 ForWriting 标志。
Dim fso, ts
Const ForWriting = 2
Set fso = CreateObject('Scripting. FileSystemObject')
Set ts = fso.OpenTextFile('c:\test.txt', ForWriting, True)
创建文本文件的第三种方法是,使用 OpenAsTextStream 方法,并设置 ForWriting 标志。要使用这种方法,使用下面的代码:
Dim
fso,f1,ts
Const
ForWriting=2
Set
fso=CreateObject('Scripting.FileSystemObject')
fso.CreateTextFile
('c:\test1.txt')
Set
f1=fso.GetFile('c:\test1.txt')
Set
ts=f1.OpenAsTextStream(ForWriting,True)

添加数据到文件中

一旦创建了文本文件,使用下面的三个步骤向文件添加数据:
打开文本文件, 写入数据, 关闭文件。
要打开现有的文件,则使用 FileSystemObject 对象的 OpenTextFile 方法或 File 对象的 OpenAsTextStream 方法。
要写数据到打开的文本文件,则根据下表所述任务使用 TextStream 对象的 WriteWriteLineWriteBlankLines 方法。
任务
方法
向打开的文本文件写数据,不用后续一个新行字符。
Write
向打开的文本文件写数据,后续一个新行字符。
WriteLine
向打开的文本文件写一个或多个空白行。
WriteBlankLines
要关闭一个打开的文件,则使用 TextStream 对象的 Close 方法。
注意 新行字符包含一个或几个字符(取决于操作系统),以把光标移动到下一行的开始位置(回车/换行)。注意某些字符串末尾可能已经有这个非打印字符了。
下面的例子示范了如何打开文件,和同时使用三种写方法来向文件添加数据,然后关闭文件:
Sub CreateFile()
   Dim fso, tf
   Set fso = CreateObject('Scripting.FileSystemObject')
   Set tf = fso.CreateTextFile('c:\testfile.txt', True)
   ' 
写一行,并带有一个新行字符。
   tf.WriteLine('Testing 1, 2, 3.') 
   '  
向文件写三个新行字符。      
   tf.WriteBlankLines(3) 
   ' 
写一行。
   tf.Write ('This is a test.') 
   tf.Close
EndSub

读取文件

要从文本文件读取数据,则使用 TextStream 对象的 ReadReadLineReadAll 方法。下表描述了不同的任务应使用哪种方法。
任务
方法
从文件读取指定数量的字符。
Read
读取一整行(一直到但不包括新行字符)。
ReadLine
读取文本文件的整个内容。
ReadAll
如果使用 ReadReadLine 方法,并且想跳过数据的特殊部分,则使用 SkipSkipLine 方法。read 方法的结果文本存在一个字符串中,该字符串可以显示在一个控件中,也可以用字符串函数(如 LeftRightMid)来分析,连接等等。
下面的例子示范了如何打开文件,和如何写数据到文件中并从文件读取数据:
Sub ReadFiles
   Dim fso, f1, ts, s
   Const ForReading = 1
   Set fso = CreateObject('Scripting.FileSystemObject')
   Set f1 = fso.CreateTextFile('c:\testfile.txt', True)
   ' 
写入一行。
   Response.Write 'Writing file <br>'
   f1.WriteLine 'Hello World'
   f1.WriteBlankLines(1)
   f1.Close
   ' 
读取文件内容。
   Response.Write 'Reading file <br>'
   Set ts = fso.OpenTextFile('c:\testfile.txt', ForReading)
   s = ts.ReadLine
   Response.Write 'File contents = '' & s & '''
   ts.Close
EndSub

移动、复制和删除文件

FSO 对象模型各有两种方法移动、复制和删除文件,如下表所述。
任务
方法
移动文件
File.Move FileSystemObject.MoveFile
复制文件
File.Copy FileSystemObject.CopyFile
删除文件
File.Delete FileSystemObject.DeleteFile
下面示例在驱动器 C 的根目录中创建一个文本文件,向其中写一些信息,然后把它移动到 \tmp 目录中,并在 \temp 中做一个备份,最后把它们从两个目录中删掉。
要运行下面的示例,需要先在驱动器 C 的根目录中创建 \tmp\temp 目录
Sub ManipFiles
   Dim fso, f1, f2, s
   Set fso = CreateObject('Scripting.FileSystemObject')
   Set f1 = fso.CreateTextFile('c:\testfile.txt', True)
   Response.Write 'Writing file <br>'
   ' 
写入一行。
   f1.Write ('This is a test.')
   ' 
关闭写入到的文件。
   f1.Close
   Response.Write 'Moving file to c:\tmp <br>'
   ' 
获取到 C:\ 根目录中文件的句柄。
   Set f2 = fso.GetFile('c:\testfile.txt')
   ' 
将文件移到 \tmp 目录。
   f2.Move ('c:\tmp\testfile.txt')
   Response.Write 'Copying file to c:\temp <br>'
   ' 
将文件复制到 \temp
   f2.Copy ('c:\temp\testfile.txt')
   Response.Write 'Deleting files <br>'
   ' 
获得文件当前位置的句柄。
   Set f2 = fso.GetFile('c:\tmp\testfile.txt')
   Set f3 = fso.GetFile('c:\temp\testfile.txt')
   ' 
删除文件。
   f2.Delete
   f3.Delete
   Response.Write 'All done!'
EndSub

我的更多文章

下载客户端阅读体验更佳

APP专享