FSO对象模型在VB中的应用
[ 2008-6-26 10:46:00 | By: 梦精灵 ]
从 Visual Basic 的第一版至今,VB中有关文件的处理都是通过使用 Open 、Write以及其它一些相关的语句和函数来实现的。随着软件技术的不断发展,加上面向对象编程概念的日臻成熟,这些文件操作语句已经不能适应软件不断增加的复杂程度的需要了。因此,从VB6.0开始,微软提出了一个全新的文件系统对象FSO。 一、简介 文件系统对象FSO的英文全称是File System Object ,这种对象模型提出了有别于传统的文件操作语句处理文件和文件夹的方法。通过采用object.method这种在面向对象编程中广泛使用的语法,将一系列操作文件和文件夹的动作通过调用对象本身的属性直接实现。 二、FSO对象模型的应用 (一)创建FSO对象模型 由于FSO对象包含在ing 类型库 (Scrrun.Dll)中,所以在使用前首先需要在在工程中引用这个文件,单击“工程”,“引用”,然后在“引用”对话框中选中“Microsoft ing Runtime”前的复选框,然后单击“确定”。 要创建FSO对象可以采用两种方法,一种是将一个变量声明为FSO对象类型: Dim fsoTest As New FileSystemObject; 另一种是通过CreateObject方法创建一个FSO 对象: Set fsoTest = CreateObject(“ing.FileSystemObject"); 在实际使用中具体采用哪种声明方法,可根据个人的使用习惯而定。 完成了FSO对象模型的创建之后,就可以利用创建的对象模型的方法访问下属各个对象的属性来获取所需信息或进行相关操作了,具体的方法在下面结合各个对象分别讲述。 (二)Drive对象 上面已经提到Drive对象是用来获取当前系统中各个驱动器的信息的。由于Drive对象没有方法,其应用都是通过属性表现出来的,所以我们必须熟悉Drive对象的属性:
其中GetDrive方法返回一个与指定路径中的驱动器相对应的 Drive 对象。该方法的语法格式为object.GetDrive drivespec,object是一个FSO对象的名称,drivespec用于指定驱动器的名称。 |
在FSO 对象模型中,提供了丰富的有关文件夹操作的方法,这些方法分别是:
| FileSystemObject对象 | 有关文件夹的方法 |
| CreateFolder | 创建一个文件夹 |
| DeleteFolder | 删除一个文件夹 |
| MoveFolder | 移动一个文件夹 |
| CopyFolder | 复制一个文件夹 |
| FolderExists | 查找一个文件夹是否在驱动器上 |
| GetFolder | 获得已有Folder对象的一个实例 |
| GetParentFolderName | 找出一个文件夹的父文件夹的名称 |
| GetSpecialFolder | 找出系统文件夹的路径 |
| Folder对象的方法 | 用途 |
| Delete | 创建一个文件夹 |
| Move | 移动一个文件夹 |
| Copy | 复制一个文件夹 |
| Name | 检索文件夹的名称 |
在此需要强调一点,前面我们曾经提到过FSO对象模型包含的方法是冗余的,所以Folder对象的Delete、Move、Copy方法和FileSystemObject对象的DeleteFolder、MoveFolder、CopyFolder方法实际上是相同的,因此在实际使用中可以任选其中的一种。
| Option Explicit Dim fsoTest As New FileSystemObject Dim folder1 As Folder 并且分别在三个命令按钮的click事件输入以下代码: Private Sub CmdCreate_Click() ' 获取 Folder 对象。 Set folder1 = fsoTest.GetFolder(“C:") '创建文件夹 fsoTest.CreateFolder (“C:\Test") MsgBox “folder C:\Test has created" End Sub Private Sub CmdDelete_Click() ' 获取 Drive 对象。 Set folder1 = fsoTest.GetFolder(“C:") '删除文件夹 fsoTest.DeleteFolder (“C:\Test") MsgBox“folder C:\Test has deleted" End Sub Private Sub CmdGetPro_Click() '获取文件夹的有关信息 Dim sReturn As String Set folder1 = fsoTest.GetFolder(“C:\Windows") 'sReturn = “The folder's Attributes is " & folder1.Attributes & vbCrLf '获取最近一次访问的时间 sReturn = sReturn & “The folder's last access time is " & folder1.DateLastAccessed & vbCrLf '获取最后一次修改的时间 sReturn = sReturn & “The folder's last modify time is " & folder1.DateLastModified & vbCrLf '获取文件夹的大小 sReturn = sReturn & “The folder's size is " & FormatNumber(folder1.Size / 1024, 0) sReturn = sReturn & “Kb" & vbCrLf '判断文件或文件夹类型 sReturn = sReturn & “The type is " & folder1.Type & vbCrLf MsgBox sReturn End Sub |
上述代码中提到的CreateFolder方法的语法形式为object.CreateFolder(foldername)。foldername指定了要创建的文件夹的名称,而DeleteFolder方法的语法形式为object.DeleteFolder folderspec[,force],其中,folderspec用来指定要删除的文件夹的名称,force是一个可选的布尔型参数,如果希望删除只读属性的文件夹则将该值设为TRUE,默认为FALSE。至于代码中用到的 Folder 对象的属性限于篇幅,就不详细介绍了,读者可参考VB文档中的相关内容。
(四)File对象和TextStream对象
由于有关File对象的复制,删除,移动等操作和Folder对象类似,所以这部分内容就不再重复。这里主要讲述利用File对象和TextStream对象操作文本文件。
通常对文本文件的操作包括在文本文件中创建数据,在文本文件中添加数据,删除文本文件的数据等操作。这些操作都可以通过File对象和FileSystemObject对象的相关方法完成。不过在使用之前,首先要创建一个文本文件,这可以通过三种方法完成。一种方法是使用FileSystemObject对象的 CreateTextFile 方法。要创建一个空文本文件,可以用以下语句:
| Dim fsoTest As New FileSystemObject, fil1 As File Set fil 1= fsoTest.CreateTextFile(“c:\testfile.txt", True) |
第二种方法是使用 FileSystemObject 对象带 ForWriting 标志设置的 OpenTextFile 方法。
| Dim fsoTest As New FileSystemObject, ts1 As New TextStream Set ts1 = fsoTest.OpenTextFile(“c:\testfile.txt", ForWriting) |
第三种方法是使用File对象的带 ForWriting 标志设置的 OpenAsTextStream 方法:
| Dim fsoTest As |

