开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 1821|回复: 2
收起左侧

[其它] VB6中的FSO对象模型

[复制链接]

发表于 2013-2-2 20:48:48 | 显示全部楼层 |阅读模式   山东省聊城市
在编程中,我们经常需要对文件系统中的驱动器、文件夹和文件进行处理,比如收集驱动器的相关信息;创建、添加、移动或删除文件夹和文件等。在VB6中新提供了一套称为FSO(File System Object)对象模型来对文件系统进行访问处理。该模型提供了一个基于对象的工具,通过它所提供的一系列属性和方法,我们可以在应用程序中更简单、灵活地对文件系统进行各种操作。   一、FSO简介
  FSO对象模型包含以下几种对象:
  Drive对象:允许收集系统物理或通过LAN与系统逻辑连接的硬盘、CD-ROM等驱动器的可用空间、共享名等信息。
  Folder对象:允许创建、删除或移动文件夹,并向系统查询文件夹的名称、路径等。
  Files对象:允许创建、删除或移动文件,并向系统查询文件的名称、路径等。
  TextStream对象:允许创建和读写文本文件。
  FileSystemObject对象:提供一整套用于驱动器、文件夹和文件操作的方法,在功能上可以把它看作是上面几个对象的集合并且经常与它们配合使用。与该对象相关联的很多方法重复了前面四个对象中的方法,因此我们既可以通过FileSystemObject对象来对驱动器、文件夹和文件进行大多数操作,也可以通过对应的驱动器、文件夹或文件对象对这些组件进行操作。FSO模型通过两种方法实现对同一对象的操作,其操作效果是相同的,提供这种冗余功能的目的是为了实现最大的编程灵活性。
  FSO对象模型包含在一个称为Scripting的类型库中,此类型库位于Scrrun.dll文件中,可从“工程”选单的“引用”对话框中选择“Microsoft Scripting Runtime”项来引用此文件。
  创建一个FileSystemObject对象,可以通过如下两种方法来完成:1?将一个变量声明为FileSystemObject对象类型:Dim fso As New FileSystemObject;2?使用CreateObject方法来创建:Set fso=CreateObject(″Scripting.FileSystemObject″)。
  二、对驱动器的操作
  对驱动器的操作主要通过Drive对象并配合FileSystemObject对象,FSO不支持进行创建或删除驱动器的操作,而只允许收集关于系统所用驱动器的信息。通过该对象的属性可以获得下列信息:以字节表示的驱动器可用空间(AvailableSpace或FreeSpace);为驱动器指定的字母号(DriveLetter);驱动器类型(DriveType);驱动器使用的文件系统类型,诸如FAT、FAT32、NTFS等(FileSystem);驱动器是否可用(IsReady);驱动器的路径或根文件夹(Path和RootFolder);驱动器序列号(SerialNumber);共享名或卷标名(ShareName和VolumeName);以字节表示的驱动器总空间(TotalSize)。下面一例说明了如何收集有关驱动器的信息:
  Private Sub Command1—Click()
  Dim fso As New FileSystemObject, drv As Drive, str As String
  Set drv=fso.GetDrive(fso.GetDriveName(″c:″))
  Debug.Print ″Total Space: ″ & FormatNumber(drv.TotalSize / 1024, 0) & ″Kb″
  Debug.Print ″Free Space: ″ & FormatNumber(drv.FreeSpace / 1024, 0) & ″Kb″
  End Sub
  三、对文件夹的操作
  Folder对象允许通过所提供的方法来复制(Copy)、删除(Delete)或移动(Move)文件夹,并通过其属性向系统查询其名称(Name)、路径(Path)以及创建日期(DateCreated)等。FileSystemObject 对象对文件夹的操作方法有创建(CreateFolder)、复制(CopyFolder)、移动(MoveFolder)和删除(DeleteFolder)。在进行上述操作之前,首先要获得该文件夹的访问句柄(GetFolder)。下例说明了如何对文件夹进行操作:
  Private Sub Command2—Click()
  Dim fso As New FileSystemObject, fldr As Folder
  Set fldr=fso.GetFolder(″c:″)    
  ′获得当前文件夹的访问句柄
  Debug.Print ″Parent folder name is: ″ & fldr
  ′打印文件夹名
  Debug.Print ″Contained on drive ″ & fldr.Drive   ′打印驱动器名
  fso.CreateFolder (″c:\Temp″)
  ′用FileSystemObject对象创建一个新的文件夹
  fso.DeleteFolder (″c:\Temp″)  
   ′删除新建的文件夹
  End Sub
  访问一个对象,要首先用“Get”方法获得该对象的访问句柄,但如果是用“Create”函数新创建一个对象, 函数会返回一个句柄到新创建的对象,这时只要设置一个变量来获取该句柄即可,不必再用“Get”方法。如:Set fldr=fso.CreateFolder(″C:\Temp2″)。
  四、对文件的操作
  读写文件,在VB6之前都是使用Open等语句来实现,FSO支持通过TextStream对象来创建和读写文本文件。
  FSO通过CreateTextFile、OpenTextFile、OpenAsTextStream 三种方法来创建一个顺序文本文件。文件创建后,就可分三步写入数据:
  1.?利用FileSystemObject对象的OpenTextFile方法或File对象的OpenAsTextStream 方法打开文本文件以备写入数据。
  2.?使用TextStream 对象的Write、WriteLine或WriteBlankLines方法写入数据。
  3.?使用TextStream对象的Close方法关闭文件。
  下例说明了如何创建文本文件:
  我们可使用TextStream 对象的Read、ReadLine或ReadAll方法从一个文本文件中读取数据。
  Private Sub Command3—Click()  
   Dim fso As New FileSystemObject, fil As File, ts As TextStream
   fso.CreateTextFile ″c:\testfile.txt″
   Set fil=fso.GetFile(″c:\testfile.txt″)
   Set ts=fil.OpenAsTextStream(ForWriting)
   ts.Write (″这是一个测试文件!″)
   ts.Close
   Set ts=fil.OpenAsTextStream(ForReading)
   s=ts.ReadLine
   MsgBox s
   ts.Close
  End Sub
    除了创建与读写文件之外,VB6还可通过FileSystemObject对象对文件进行复制(CopyFile)、移动(MoveFile)与删除(DeleteFile)等操作,在File对象中等效的方法有Copy 、Move和Delete。例程如下 :
  Private Sub Command4—Click()
    Dim fso As New FileSystemObject, txtfile As TextStream, fil1 As File, fil2 As File
    Set txtfile=fso.CreateTextFile(″c:\testfile.txt″, True)
    txtfile.Write (″这是一个测试文件!″)
    txtfile.Close
    Set fil1=fso.GetFile(″c:\testfile.txt″)
  ′获得一个文件句柄
    fil1.Copy (″c:\temp1\testfile.txt″)  
  ′将该文件复制到\temp1目录下
    fil1.Move (″c:\temp2\testfile.txt″)  
  ′将该文件移动到\temp2目录下
    Set fil1=fso.GetFile(″c:\temp1\testfile.txt″)
    ′获得这些文件当前位置的句柄
    Set fil2=fso.GetFile(″c:\temp2\testfile.txt″)
    fil1.Delete
    fil2.Delete
  End Sub
结帖率:93% (43/46)
发表于 2013-4-18 21:10:14 | 显示全部楼层   广东省惠州市
支持一下
回复 支持 反对

使用道具 举报

结帖率:100% (6/6)
发表于 2013-2-2 20:54:38 | 显示全部楼层   广东省东莞市
矜持住。。。。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表