FSO对象模型在VB中的应用

2016-02-19 20:16 3 1 收藏

有一种朋友不在生活里,却在生命力;有一种陪伴不在身边,却在心间。图老师即在大家的生活中又在身边。这么贴心的服务你感受到了吗?话不多说下面就和大家分享FSO对象模型在VB中的应用吧。

【 tulaoshi.com - 编程语言 】

从VisualBasic的第一版至今,VB中有关文件的处理都是通过使用Open、Write以及其它一些相关的语句和函数来实现的。随着软件技术的不断发展,加上面向对象编程概念的日臻成熟,这些文件操作语句已经不能适应软件不断增加的复杂程度的需要了。因此,从VB6.0开始,微软提出了一个全新的文件系统对象FSO。
  
  一、简介
  
  文件系统对象FSO的英文全称是FileSystemObject,这种对象模型提出了有别于传统的文件操作语句处理文件和文件夹的方法。通过采用object.method这种在面向对象编程中广泛使用的语法,将一系列操作文件和文件夹的动作通过调用对象本身的属性直接实现。
  
  FSO对象模型不仅可以象使用传统文件操作语句那样实现文件的创建、改变、移动和删除,而且可以检测是否存在指定的文件夹,如果存在,那么,这个文件夹又位于磁盘上的什么位置。更令人高兴的是FSO对象模型还可以获取关于文件和文件夹的信息,如名称、创建日期或最近修改日期等以及当前系统中使用的驱动器的信息,如驱动器的种类是CD-ROM还是可移动磁盘,当前磁盘的剩余空间还有多少。而以前要获取这些信息必须通过调用WindowsAPI函数集中的相应函数才能实现。
  
  FSO对象模型包含在Scripting类型库(Scrrun.Dll)中,它同时包含了Drive、Folder、File、FileSystemObject和TextStream五个对象。其中Drive用来收集驱动器的信息,如可用磁盘空间或驱动器的类型;Folder用于创建、删除或移动文件夹,同时可以进行向系统查询文件夹的路径等操作;File的基本操作和Folder基本相同,所不同的是Files的操作主要是针对磁盘上的文件进行的;FileSystemObject是FSO对象模型中最主要对象,它提供了一套完整的可用于创建、删除文件和文件夹,收集驱动器、文件夹、文件相关信息的方法。需要注意的是,FSO对象模型提供的方法是冗余的,也就是说在实际使用中,FSO对象模型中包含的不同对象的不同方法进行的却是同样的操作,而且FileSystemObject对象的方法直接作用于其余对象,所以在后面的文章中并没有单独提到FileSystemObject对象,千万不要以为没有提到就不重要,事实上FileSystemObject对象在整个FSO对象模型中无处不在;最后的TextStream对象则是用来完成对文件的读写操作的。
  
  在初步了解了FSO对象模型之后,下面我们通过实际的代码对不同的对象进行进一步的阐述。
  
  二、FSO对象模型的应用
  
  (一)创建FSO对象模型
  
  由于FSO对象包含在Scripting类型库(Scrrun.Dll)中,所以在使用前首先需要在在工程中引用这个文件,单击“工程”,“引用”,然后在“引用”对话框中选中“MicrosoftScriptingRuntime”前的复选框,然后单击“确定”。
  
  要创建FSO对象可以采用两种方法,一种是将一个变量声明为FSO对象类型:
  
   DimfsoTestAsNewFileSystemObject;
  
  另一种是通过CreateObject方法创建一个FSO对象:
  
   SetfsoTest=CreateObject(“Scripting.FileSystemObject");
  
  在实际使用中具体采用哪种声明方法,可根据个人的使用习惯而定。
  
  完成了FSO对象模型的创建之后,就可以利用创建的对象模型的方法访问下属各个对象的属性来获取所需信息或进行相关操作了,具体的方法在下面结合各个对象分别讲述。
  
  (二)Drive对象
  
  上面已经提到Drive对象是用来获取当前系统中各个驱动器的信息的。由于Drive对象没有方法,其应用都是通过属性表现出来的,所以我们必须熟悉Drive对象的属性:
  
  -align="middle">属性->-align="middle">功能->->AvailableSpace->->返回在指定的驱动器或网络共享上的用户可用的空间容量。->->DriveLetter->->返回某个指定本地驱动器或网络驱动器的字母,这个属性是只读的。->->DriveType->->返回指定驱动器的磁盘类型。->->FileSystem->->返回指定驱动器使用的文件系统类型。->->FreeSpace->->返回指定驱动器上或共享驱动器可用的磁盘空间,这个属性是只读的。->->IsReady->->确定指定的驱动器是否准备好。->->Path->->返回指定文件、文件夹、或驱动器的路径。->->RootFolder->->返回一个Folder对象,该对象表示一个指定驱动器的根文件夹。只读属性。->->SerialNumber->->返回用于唯一标识磁盘卷标的十进制序列号。->->ShareName->->返回指定驱动器的网络共享名->->TotalSize->->以字节为单位,返回驱动器或网络共享的总空间大小。->->VolumeName->->设置或返回指定驱动器的卷标名。->
  从上面的属性可以看到Drive对象基本上包含了日常操作所需的全部的驱动器信息,因此在使用中是非常方便的。下面通过一个实例讲述Drive对象的使用。首先在VB中建立一个工程,然后添加一个命令按钮,将其Caption设置为“TestDrive”,然后在click事件中加入以下代码:
  
  ->DimfsoTestAsNewFileSystemObject
  Dimdrv1AsDrive,sReturnAsString
  Setdrv1=fsoTest.GetDrive(“C:")
  sReturn=“Drive"&“C:"&vbCrLf
  sReturn=sReturn&“VolumeName"&drv1.VolumeName&vbCrLf
  sReturn=sReturn&“TotalSpace:"&FormatNumber(drv1.TotalSize/1024,0)
  sReturn=sReturn&“Kb"&vbCrLf
  sReturn=sReturn&“FreeSpace:"&FormatNumber(drv1.FreeSpace/1024,0)
  sReturn=sReturn&“Kb"&vbCrLf
  sReturn=sReturn&“FileSystem:"&drv1.FileSystem&vbCrLf
  MsgBoxsReturn->
  其中GetDrive方法返回一个与指定路径中的驱动器相对应的Drive对象。该方法的语法格式为object.GetDrivedrivespec,object是一个FSO对象的名称,drivespec用于指定驱动器的名称。
  按F5运行上述代码,按下TestDrive按钮就会弹出一个消息框显示C盘的信息。
  (三)Folder对象
  
  在FSO对象模型中,提供了丰富的有关文件夹操作的方法,这些方法分别是:
  
  -align="middle">FileSystemObject对象->-align="middle">有关文件夹的方法->->CreateFolder->->创建一个文件夹->->DeleteFolder->->删除一个文件夹->->MoveFolder->->移动一个文件夹->->CopyFolder->->复制一个文件夹->->FolderExists->->查找一个文件夹是否在驱动器上->->GetFolder->->获得已有Folder对象的一个实例->->GetParentFolderName->->找出一个文件夹的父文件夹的名称->->GetSpecialFolder->->找出系统文件夹的路径->
  -width="40">Folder对象的方法->-width="60">用途->-width="40">Delete->-width="60">创建一个文件夹->-width="40">Move->-width="60">移动一个文件夹->-width="40">Copy->-width="60">复制一个文件夹->-width="40">Name->-width="60">检索文件夹的名称->
  在此需要强调一点,前面我们曾经提到过FSO对象模型包含的方法是冗余的,所以Folder对象的Delete、Move、Copy方法和FileSystemObject对象的DeleteFolder、MoveFolder、CopyFolder方法实际上是相同的,因此在实际使用中可以任选其中的一种。
  
  和Drive对象一样,下面通过实例演示Folder对象的应用。在VB下新建一个工程,然后在上面添加三个命令按钮,然后在Form1的通用部分加入以下代码:
  
  ->OptionExplicit
   DimfsoTestAsNewFileSystemObject
   Dimfolder1AsFolder
   并且分别在三个命令按钮的click事件输入以下代码:
  PrivateSubCmdCreate_Click()
   '获取Folder对象。
   Setfolder1=fsoTest.GetFolder(“C:")
   '创建文件夹
   fsoTest.CreateFolder(“C:Test")
   MsgBox“folderC:Testhascreated"
  EndSub
  
  PrivateSubCmdDelete_Click()
   '获取Drive对象。
   Setfolder1=fsoTest.GetFolder(“C:")
   '删除文件夹
   fsoTest.DeleteFolder(“C:Test")
   MsgBox“folderC:Testhasdeleted"
  EndSub
  
  PrivateSubCmdGetPro_Click()
   '获取文件夹的有关信息
   DimsReturnAsString
   Setfolder1=fsoTest.GetFolder(“C:Windows")
   'sReturn=“Thefolder'sAttributesis"&folder1.Attributes&vbCrLf
   '获取最近一次访问的时间
   sReturn=sReturn&“Thefolder'slastaccesstimeis"&folder1.DateLastAccessed& vbCrLf
   '获取最后一次修改的时间
   sReturn=sReturn&“Thefolder'slastmodifytimeis"&folder1.DateLastModified&vbCrLf
   '获取文件夹的大小
   sReturn=sReturn&“Thefolder'ssizeis"&FormatNumber(folder1.Size/1024,0)
   sReturn=sReturn&“Kb"&vbCrLf
   '判断文件或文件夹类型
   sReturn=sReturn&“Thetypeis"&folder1.Type&vbCrLf
   MsgBoxsReturn
  EndSub->
  上述代码中提到的CreateFolder方法的语法形式为object.CreateFolder(foldername)。foldername指定了要创建的文件夹的名称,而DeleteFolder方法的语法形式为object.DeleteFolderfolderspec[,force],其中,folderspec用来指定要删除的文件夹的名称,force是一个可选的布尔型参数,如果希望删除只读属性的文件夹则将该值设为TRUE,默认为FALSE。至于代码中用到的Folder对象的属性限于篇幅,就不详细介绍了,读者可参考VB文档中的相关内容。
  
  (四)File对象和TextStream对象
  
  由于有关File对象的复制,删除,移动等操作和Folder对象类似,所以这部分内容就不再重复。这里主要讲述利用File对象和TextStream对象操作文本文件。
  
  通常对文本文件的操作包括在文本文件中创建数据,在文本文件中添加数据,删除文本文件的数据等操作。这些操作都可以通过File对象和FileSystemObject对象的相关方法完成。不过在使用之前,首先要创建一个文本文件,这可以通过三种方法完成。一种方法是使用FileSystemObject对象的CreateTextFile方法。要创建一个空文本文件,可以用以下语句:
  
  ->DimfsoTestAsNewFileSystemObject,fil1AsFile
  Setfil1=fsoTest.CreateTextFile(“c:estfile.txt",True)->
  第二种方法是使用FileSystemObject对象带ForWriting标志设置的OpenTextFile方法。
  
  ->DimfsoTestAsNewFileSystemObject,ts1AsNewTextStream
  Setts1=fsoTest.OpenTextFile(“c:estfile.txt",ForWriting)->
  第三种方法是使用File对象的带ForWriting标志设置的OpenAsTextStream方法:
  
  ->DimfsoTestAs  ->->

来源:https://www.tulaoshi.com/n/20160219/1623198.html

延伸阅读
由于API过程存在于VisualBasic应用程序之外的文件中,在使用时必须指定过程的位置和调用参数。可以用Declare语句提供这类信息。在声明了API过程之后,可以把它当做VisualBasic自己的过程使用。 如果在VisualBasic中直接调用API,那么VisualBasic环境下固有的安全机制将受到不利影响。这意味着在测试和调试程序时可能会遇到更多的系统故障...
标签: ASP
       在国内提供支持ASP的免费空间越来越多了,对于ASP爱好者来说无疑是个好的势头,但是很多提供免费ASP空间的站点都没有对FileSystemObject这个对象做出任何限制,这也就导致了安全问题。比如,今年愚人节“东莞视窗”所有的主页都遭到了黑客的攻击,其实做这件事情很简单,就是使用FileSyste...
尽管Windows的API函数在当今Visual成风的时代正渐渐被人们忘却,但是正如当年开发高技巧的DOS软件离不开汇编语言和DOS系统功能调用一样,无论开发平台高级到什么地步,只要Windows还在最底层运作,就要用到API函数。无论VB的开发手段多么高明,功能多么强大,但是在现实应用中,总有一些功能的实现是VB无能为力的。微软也早意识到这一点,...
----在用VisualBasic编写Win95应用程序时,有时可能希望由程序来控制计算机的启动功能,比如当应用程序对系统注册表作了修改后需要重新启动Win95。 ----那么,如何在应用程序中控制Win95的启动呢?由于VisualBasic自身没有提供相关的命令和函数,我们只好求助于WindowsAPI函数ExitWindowsEx,调用该函数,我们可以完成重新启动、关机、...
AutoCAD是一个常用工业绘图平台,用户在使用时经常要用Lisp或ADS进行二次开发,但Lisp处理数据库能力差,编制界面困难,而ADS要求较高.相比之下,VisualBasic(以下简称VB)编写独立程序的速度快,编制界面容易,可进行快速计算,可操作数据库。ACADWIN是AUTOCAD的Windows版程序,具有WINDOWS的许多特点。可以利用DDE进行VB与ACADWIN之间的通讯,实现...

经验教程

721

收藏

51
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部