第九章 文 件

58
第第第 第 第 本本本本本本本1 本本本本本 本本 本本本本本本 drvDrive 本本本本本 dirD irectory 本本本本本 filFile 2 本本 VB 本本本本本本 本本本本本本本 、; 3 本本本本本本本本本 本本本 本 :、 /本 本本本 、; 4 本本本本本本本本本 本本本 本 :、 /本 本本本 、; 5 本本本本本本本本本本6 本本本本 FileSystem Object (FSO) 本本本本本 本本本本本本本 本本本本本

description

第九章 文 件. 本章内容及要求: 1 掌握文件系统控件(驱动器列表框 drvDrive 、目录列表框 dirDirectory 、文件列表框 filFile 。 2 掌握 VB 中文件的概念、种类及其结构; 3 掌握顺序文件的操作:打开、读 / 写、关闭; 4 了解随机文件的操作:打开、读 / 写、关闭; 5 了解二进制文件的操作。 6 了解使用 FileSystem Object (FSO) 对象模型对文件进行操作的一些基础知识. 本章重点: 1 文件系统控件驱动器列表框、目录列表框、文件列表框的使用。 - PowerPoint PPT Presentation

Transcript of 第九章 文 件

Page 1: 第九章  文 件

第九章 文 件本章内容及要求:1 掌握文件系统控件(驱动器列表框 drvDrive 、

目录列表框 dirDirectory 、文件列表框 filFile 。2 掌握 VB 中文件的概念、种类及其结构;3 掌握顺序文件的操作:打开、读 / 写、关闭;4 了解随机文件的操作:打开、读 / 写、关闭;5 了解二进制文件的操作。6 了解使用 FileSystem Object (FSO) 对象模型对

文件进行操作的一些基础知识

Page 2: 第九章  文 件

本章重点:1 文件系统控件驱动器列表框、目录列表框、文件

列表框的使用。2 顺序文件的操作:打开、读 / 写、关闭;

本章难点: 随机文件、二进制文件的操作, FileSystem Ob

ject (FSO) 对象模型。

Page 3: 第九章  文 件

9.1 文件的概念一、文件及其结构 文件:存储在外部介质上数据的集合。按名存取

磁盘文件是由数据记录组成。记录是计算机处理数据的基本单位,它由一组具有共同属性相互关联的数据项组成。

学号 姓名 数学成绩 语文成绩 物理成绩 总分

数据项

Page 4: 第九章  文 件

记录 1 记录 2 …… 记录 N 文件结束标志

二、文件分类根据访问文件的方式将文件分成 3 类: 顺序文件 随机文件 二进制文件。

1 .顺序文件 顺序文件( Sequential File )是普通的文本文件。顺序文件中的记录按顺序一个接一个地排列。读写文件存取记录时,都必须按记录顺序逐个进行。一行一条记录(一项数据),记录可长可短,以“换行”字符为分隔符号。

Page 5: 第九章  文 件

#1 记录 1 #2 记录 2 …… #N 记录 N

2 .随机文件 随机文件( Random Access File )是可以按任意次序读写的文件,其中每个记录的长度必须相同。在这种文件结构中,每个记录都有其唯一的一个记录号,所以在读取数据时,只要知道记录号,便可以直接读取记录。

随机文件的文件结构

Page 6: 第九章  文 件

3 .二进制文件 二进制文件( Binaryfile )是字节的集合、它直接把二进制码存放在文件中。 除了没有数据类型或者记录长度的含义以外,它与随机访问很相似。 二进制访问模式是以字节数来定位数据,在程序中可以按任何方式组织和访问数据,对文件中各字节数据直接进行存取。

Page 7: 第九章  文 件

9.2 文件系统控件VB 提供了 3 种可直接浏览系统目录结构和文件的控件:

驱动器列表框、目录列表框、文件列表框。

驱 动 器列表框

文件列表框

目录列表框

Page 8: 第九章  文 件

9.2.1 驱动器列表框( DriveListBox ) 驱动器列表框( DriveListBox ) 控件,通常只显示当前驱动器名称,单击向下箭头,就会下拉出计算机拥有的所有磁盘驱动器,供用户选择。

1 .重要属性

Drive 属性是驱动器列表框控件最重要和常用的属性,该属性在设计时不可用。使用格式:

object.Drive [= < 字符串表达式 >]

例如: Drive1.drive=“D:”

Page 9: 第九章  文 件

2 .重要事件—— Change 事件

在程序运行时,当选择一个新的驱动器或通过代码改变Drive 属性的设置时都会触发驱动器列表框的 change 事件发生。

9.2.2 目录列表框( DirListBox )

目录列表框( DirListBox ) 控件用来当前驱动器目录结构及当前目录下的所有子文件夹(子目录)。供用户选择其中一个目录为当前目录。

Page 10: 第九章  文 件

1 .常用属性 Path 属性是目录列表框控件的最常用的属性,用于返回或设置当前路径。该属性在设计时是不可用的。使用格式: Object.Path [= < 字符串表达式 >]

其中:Object :对象表达式,其值是目录列表框的对象名。< 字符串表达式 > :用来表示路径名的字符串表达式。 例如, Dir1.Path=" C:\Mydir" 。 缺省值是当前路径。

说明: Path 属性也可以直接设置限定的网络路径

如, \\ 网络计算机名 \ 共享目录名 \path

Page 11: 第九章  文 件

List 、 ListCount 和 ListIndex 等属性,这些属性与列表框( ListBox )控件基本相同。

目录列表框中的当前目录的ListIndex 值为 -1 。紧邻其上的目录具有 ListIndex 值为 -2 ,再上一个的 ListIndex 值为 -3 ,如右图所示。

2 .重要事件—— Change 事件 与驱动器列表框一样,在程序运行时,每当改变当前目录,即目录列表框的 Path 属性发生变化时,都要触发其Change 事件发生。

Page 12: 第九章  文 件

文件列表框( FileListBox )控件用来显示 Path 属性指定的目录中的文件定位并列举出来。该控件用来显示所选择文件类型的文件列表。

9.2.3 文件列表框( FilelistBox )

1 .常用属性

( 1 ) Path 属性 用于返回和设置文件列表框当前目录,设计时不可用。 说明:当 Path 值的改变时,会引发一个 PathChange 事件。

Page 13: 第九章  文 件

此条件也可改为: Len(file1.path)>3

( 2 ) Filename 属性 用于返回或设置被选定文件的文件名,设计时不可用。 说明: Filename 属性不包括路径名。

例如:要从文件列表框( File1 )中获得全路径的文件名 F

name$ ,用下面的程序代码: If Right(file1.path,1) ="\" Then

Fname$=file1.path & file1.filename

Else

Fname$=file1.path & "\" & file1.filename

End If

Page 14: 第九章  文 件

( 3 ) Pattern 属性 用于返回或设置文件列表框所显示的文件类型。可在设计状态设置或在程序运行时设置。缺省时表示所有文件。设置形式为: Object.Pattern [= value]

其中 value 是一个用来指定文件类型的字符串表达式,并可使用包含通配符(“ *” 和“?”)例如:File1.Pattern= "*.txt "

File1.Pattern= "*.txt; *.Doc “

File1.Pattern= "???.txt“

注意:要指定显示多个文件类型,使用“ ;” 为分隔符 重新设置 Pattern 属性引发“ PatternChange” 事件。

Page 15: 第九章  文 件

( 4 )文件属性: Archive : True ,只显示文档文件; Normal : True ,只显示正常标准文件; Hidden : True ,只显示隐含文件; System : True ,只显示系统文件。 ReadOnly : True ,只显示只读文件。

( 5 ) MultiSelect 属性文件列表框 MultiSelect 属性与 ListBox 控件中 MultiSelect

属性使用完全相同。默认情况是 0 ,即不允许选取多项。

Page 16: 第九章  文 件

( 6 ) List 、 ListCount 和 ListIndex 属性 文件列表框中的 List 、 ListCount 和 ListIndex 属性与

列表框( ListBox )控件的 List 、 ListCount 和 ListInd

ex 属性的含义和使用方法相同,在程序中对文件列表框中的所有文件进行操作,就有用到这些属性。

例如,下段程序是将文件列表框( File1 )中的所有文件名显示在窗体上。

For i = 0 To File1.ListCount - 1

Print File1.List(i)

Next i

Page 17: 第九章  文 件

2. 主要事件 ( 1 ) PathChange 事件 当路径被代码中 FileName 或 Path 属性的设置所改变

时,此事件发生。 说明:可使用 PathChange 事件过程来响应 FileListBox 控

件中路径的改变。当将包含新路径的字符串给 FileName

属性赋值时, FileListBox 控件就调用 PathChange 事件过程。

( 2 ) PatternChange 事件 当文件的列表样式,如: "*.*" ,被代码中对 FileNam

e 或 Path 属性的设置所改变时,此事件发生。 说明:可使用 PatternChange 事件过程来响应在 FileList

Box 控件中样式的改变。

Page 18: 第九章  文 件

( 3 ) Click 、 DblClick 事件: 例如:单击输出文件名。

Sub filFile_Click( ) MsgBox filFile.FileNameEnd Sub

例如:双击执行可执行程序Sub File1_DblClick( ) Dim Fname As String If Right(file1.path,1) ="\" Then Fname=file1.path & file1.filename Else Fname=file1.path & "\" & file1.filename End If RetVal = Shell(Fname, 1) ‘ 执行程序End Sub

Page 19: 第九章  文 件

Sub Drive1_Change() Dir1.Path = Drive1.DriveEnd Sub

Sub Dir1_Change() filFile.Path = Dir1.PathEnd Sub

说明: 要使驱动器、目录和文件列表框同步显示,那么就需要编写代码才能使它们之间彼此同步。

9.2.4 文件系统控件的联动。

Page 20: 第九章  文 件

打开文件 读出或写入 关闭文件

9.3 顺序文件在程序中对文件的操作,通常按 3 个步骤进行:

9.3.1 顺序文件的打开与关闭

1 。打开顺序文件

其使用格式如下:

Open FileName For [Input | Output | Append] [Lock]As filenumber [Len = Buffersize]

各参数的意义(见教材 Pg. 230 )

Page 21: 第九章  文 件

例如:

OPEN “C:\TEMP\A.TXT ” FOR Input AS #1

OPEN“C:\TEMP\B.TXT ” FOR Output AS #2

OPEN“C:\TEMP\C.TXT ” FOR Append AS #1

2 、关闭文件—— Close 语句使用格式如下: Close [filenumberlist]

其中:filenumberlist :可选项,为文件号列表,如: #1, #2, #3 ,如果省略,则将关闭 Open 语句打开的所有活动文件。例如: Close #1,#2,#3

Close

Page 22: 第九章  文 件

9.3.2 顺序文件的读写操作 向文件写入内容使用 Print # 语句或 Write# 语句,在程序是数据输出。

1 . Print 语句

使用格式: PRINT #< 文件号 > , [< 输出列表 >]

说明:文件号为以写方式打开文件的文件号; 输出列表为用分号或逗号分隔的变量、常量、空格和定位函数序列。 2 . Write 命令使用格式: Write #< 文件号 > , [< 输出列表 >]Write 语句采用紧凑格式。数据项之间插入“ ,” ,并给字符数据加上双引号。

Page 23: 第九章  文 件

例 9.1 Print 与 Write语句输出数据结果比较。Private Sub Form_Click()

Dim Str As String, Anum As Integer

Open "D:\Myfile.dat" For Output As 1

Str = "ABCDEFG"

Anum = 12345

Print #1, Str, Anum

Write #1, Str, Anum

Close #1

End Sub

Page 24: 第九章  文 件

例 9.2 编程把一个文本框中的内容,以文件形式存入磁盘。假定文本框的名称为 Mytxt ,文件名为 Myfile.dat 。

方法 1 :把整个文本框的内容一次性地写入文件。Open "Myfile.dat" For Output As #1

Print #1, Mytxt.Text

Close #1

方法 2 :把整个文本框的内容一个字符一个字符地写入文件。Open "Myfile.dat" For Output As #1

For i=1 To len(Mytxt.Text)

Print #1,Mid(Mytxt.Text,i,1);

Next i

Close #1

Page 25: 第九章  文 件

2. 顺序文件读操作 从现存文件中读入数据,应以顺序 Input 方

式打开该文件。然后使用 Input# 语句、 Line Inp

ut# 语句和 Input( ) 函数读入到程序变量中。 使用格式如下:

INPUT # 文件号 , 变量列表把读出的每个数据项分别存放到所对应的变量。

LINE INPUT # 文件号 , 字符串变量读一行到变量中,主要用来读取文本文件。

INPUT$( 读取字符数 , # 文件号 )

读取指定的数量的字符,作为函数的返回值。

Page 26: 第九章  文 件

3.与读文件操作有关的几个函数( 1 ) Lof 函数 LOF 函数将返回某文件的字节数。例如, LOF(1) 返回 #1

文件的长度,如果返回 0 值,则表示该文件是一个空文件。( 2 ) Loc 函数 Loc 函数将返回在一个打开文件中读写的记录号;对于二

进制文件,它将返回最近读写的一个字节的位置。( 3 ) Eof 函数 Eof 函数将返回一个表示文件指针是否到达文件末尾的标志。如果到了文件末尾, Eof 函数返回 TRUE(-1) ,否则返回 FALSE(0) 。

Page 27: 第九章  文 件

例 9.3 编程将一文本文件的内容读到文本框 假定文本框名称为 txtTest ,文件名为 MYFILE.TXT 。

可以通过下面三种方法来实现。 方法 1 :一行一行读

txtTest.Text = ""

Open "MYFILE.TXT" For Input As #1

Do While Not EOF(1)

Line Input #1, InputData

txtTest.Text = txtTest.Text + InputData+vbCrLf

Loop

Close #1回车换行

Page 28: 第九章  文 件

方法 2 :一次性读txtTest.Text = ""Open "MYFILE.TXT" For Input As #1txtTest.Text = Input( LOF(1),1)Close #1

方法 3 :一个个字符读Dim InputData as String*1txtTest.Text = ""Open "MYFILE.TXT" For Input As #1Do While Not EOF(1)

Input #1, InputDatatxtTest.Text = txtTest.Text + InputData

LoopClose #1

Page 29: 第九章  文 件

例 9.4 利用文件系统控件、组合框、文本框,制作一个文件浏览器。 要求:组合框限定文件列表框中显示文件的类型,如选定“ *.Txt” 文件。当在文件列表框选定欲显示的文件时,在文本框显示出该文件的内容。

程序运行效果如图

Page 30: 第九章  文 件

9.4 随机文件9.4.1 随机文件的打开与关闭

1.打开随机文件打开随机文件格式为:OPEN FileName FOR Random [Access <Mode>][Lock] As file

number [Len = reclength]

用 OPEN命令以 Random 模式打开随机文件,同时指出记录的长度。文件打开后,可同时进行读写操作。

例如:

Open "d:\abc.dat" For Random Access Read As #1 Len = 20

Page 31: 第九章  文 件

2.关闭随机文件 随机文件的关闭与关闭顺序文件相同。

9.4.2 写随机文件 Put [#] 文件号, [ 记录号 ] ,变量名

将一个记录变量的内容写到指定的记录位置处。忽略记录号,则表示在当前记录后的位置插入

一条记录。

9.4.3 读随机文件Get [#] 文件号, [ 记录号 ] ,变量名忽略记录号,则读出当前记录后的那一条记录。

Page 32: 第九章  文 件

例 9.5 设计一个简单的学生成绩管理程序,使用随机文件存储学生信息。程序的运行界面下图所示,该程序的具有数据添加、修改、删除及学生信息顺序查询等功能。

Page 33: 第九章  文 件

在标准模块Module1 中定义学生信息数据类型及全局变量:Type Student ' 定义学生信息记录类型 Id As String * 8

Name As String * 10

Class As String * 10

Subject As String * 20

Mark(1 To 3) As Integer

End Type' 定义 Student 类型的变量存放当前记录内容Public Stu As Student

Public Filename As String ' 定义变量存放学生信息文件名Public Rec_no As Integer ' 定义变量存放当前记录号Public Rec_total As Integer ' 定义变量存放总记录数 Public Rec_long As Integer ' 定义变量存放记录长度

Page 34: 第九章  文 件

1 打开文件 Open " 文件名 " For Binary As # 文件号

2. 写操作Put [#] 文件号, [ 位置 ] ,变量名写入长度等于变量长度的数据。

3. 读操作GET [#] 文件号, [ 位置 ] ,变量名

从指定位置开始读出长度等于变量长度的数据存入变量中,数据读出后移动变量长度位置,如果忽略位置,则表示从文件指针所指的位置开始读出数据,数据读出后移动变量长度位置。

9.5 二进制文件

Page 35: 第九章  文 件

例 9.6 编程序实现将 D 盘根目录中的文件 Abc.dat复制到 A

盘,且文件名改为 Myfile.dat 。Dim char As Byte

' 打开源文件Open "D:\Abc.dat" For Binary As # 1

' 打开目标文件Open "A:\Myfile.dat" For Binary As # 2

Do While Not EOF(1)

Get #1, , char ' 从源文件读出一个字节Put #2, , char ' 将一个字节写入目标文件Loop

Close#1, #2

Page 36: 第九章  文 件

9.6 常用的文件操作语句和函数

1. 改变当前驱动器( ChDrive 语句)格式: ChDrive drive

功能:改变当前驱动器。说明: 如果 drive 为“”,则当前驱动器将不会改变;如果 d

rive 中有多个字 符,则 ChDrive 只会使用首字母。例如: ChDrive "D" 及 ChDrive "D:\" 和 ChDrive "Das

d" 都是将当前驱动器设为 D 盘。

9.6.1 文件操作语句

Page 37: 第九章  文 件

2. 改变当前目录( ChDir 语句)格式: ChDir path功能:改变当前目录。例如: ChDir "D:\TMP"

说明: ChDir 语句改变缺省目录位置,但不会改变缺省驱动器位置。例如,如果缺省的驱动器是 C ,则上面的语句将会改变驱动器 D 上的缺省目录,但是 C仍然是缺省的驱动器: 3. 删除文件( Kill 语句)格式: Kill pathname功能:删除文件。说明: pathname 中可以使用统配符“ *” 和“ ?” 。例如: Kill "*.TXT "

Kill "C:\Mydir\Abc.dat"

Page 38: 第九章  文 件

4. 建立( MkDir 语句)和删除( RmDir 语句)目录建立目录格式: MkDir path

功能:创建一个新的目录。 例如: MkDir "D:\Mydir\ABC"

删除目录格式: RmDir path

功能:删除一个存在的目录。说明:只能删除空目录。例如:RmDir "D:\Mydir\ABC“

说明:RmDir 只能删除空子目录,如果想要使用 RmDir 来

删除一个含有文件的目录或文件夹,则会发生错误。

Page 39: 第九章  文 件

5 拷贝文件 —— FileCopy 语句 格式: FileCopy source , destination功能:复制一个文件。例如:

FileCopy "D:\Mydir\Test.doc" "A:\MyTest.doc" 说明: FileCopy 语句不能复制一个已打开的文件。6 文件的更名 —— Name 语句

格式: Name oldpathname As newpathname功能:重新命名一个文件或目录。

例: Name "D:\Mydir\Test.doc" As "A:\MyTest.doc"

说明: (1) Name 具有移动文件的功能。(2) 不能使用统配符“ *” 和“ ?” ,不能对一个已打

开的文件上使用 Name 语句。

Page 40: 第九章  文 件

7 设置文件属性—— SetAttr 语句。格式: SetAttr FileName, attributes其其其其其其FileName :必要参数。一个文件名的字符串表达式。       Attributes :必要参数。常数或数值表达式,其总和用来表

示文件的属性。 Attributes 参数设置下表:内部常数 数值 描 述VbNormal 0 常规 ( 缺省值 )

VbReadOnly 1 只读。VbHidden 2 隐藏。VbSystem 4 系统文件VbArchive 32 上次备份以后,文件已经改变

Page 41: 第九章  文 件

1 获得当前目录—— CurDir 函数格式: CurDir[(drive)]

功能:利用 CurDir 函数可以确定指定驱动器的当前目录。 说明:可选的 Drive参数是一个字符串表达式,它指定一

个存在的驱动器。如果没有指定驱动器,或 Drive 是零长度字符串 (“”) ,则 CurDir 会返回当前驱动器的路径。

例如: str=CurDir(“C:”)

获得 C 盘当前目录路径,并赋值给变量 Str

9.6.2 文件操作函数

Page 42: 第九章  文 件

2 获得文件属性—— GetAttr函数。 格式: GetAttr(FileName)

功能:返回代表一个文件、目录、或文件夹的属性的 Integ

er 数据。 GetAttr 返回的值及代表的含义下表 内部常数 数值 描 述

VbNormal 0 常规vbReadOnly 1 只读VbHidden 2 隐藏VbSystem 4 系统文件VbDirectory 16 目录或文件夹VbArchive 32 上次备份以后,文件已经改变Vbalias 64 指定的文件名是别名

Page 43: 第九章  文 件

3. FileDateTime 函数格式: FileDateTime(FileName)

功能:返回一个 Variant (Date) ,此值为一个文件被创建或最后修改后的日期和时间。

4 . FileLen 函数格式: FileLen(FileName)

功能:返回一个 Long ,代表一个文件的长度,单位是字节。

Page 44: 第九章  文 件

5 . Shell 函数和 Shell 过程在 VB 中,可以调用在 DOS 下或 Windows 下运行的应用程序: 函数调用形式: ID=Shell( FileName [,WindowType] )

说明:执行一个可执行文件,返回一个 Variant (Doubl

e) ,如果成功的话,代表这个程序的任务 ID ,它是一个唯一的数值,用来指明正在运行的程序。若不成功,则会返回 0

过程调用形式: Shell FileName [,WindowType])

Page 45: 第九章  文 件

FileName :是要执行的应用程序名字符串,包括盘符、路径,它必须是可执行的文件。 WindowType :为整型值,表示执行应用程序打开的窗口类型,其取值下表。

内部常量 值 描 述

VbHide 0 窗口被隐藏,且焦点会移到隐式窗口

VbNormalFocus 1 窗口具有焦点,且会还原到它原来的大小和位置

VbMinimizedFocus 2 (缺省)窗口会以一个具有焦点的图标来显示( 最小化 )

VbMaximizedFocus

3 窗口是一个具有焦点的最大化窗口

VbNormalNoFocus 4 窗口会被还原到最近使用的大小和位置,而当前活动的窗口仍然保持活动

VbMinimizedNoFocus 6 窗口会以一个图标来显示。而当前活动的的窗口仍然保持活动

Page 46: 第九章  文 件

例如:' 调用执行 Windows 系统中的记事本i = Shell("C:\WINDOWS\NOTEPAD.EXE")

‘ 进入 MS_DOS 状态j = Shell("c:\command.com", 1)

也可按过程形式调用:Shell "C:\WINDOWS\NOTEPAD.EXE"

Shell "c:\command.com", 1

注意,上面指定的执行文件,可能因不同计算机系统,文件的路径有所不同。

Page 47: 第九章  文 件

*9.7 文件系统对象 说明: 本节为选学内容,教师可根据学生及课时情况,进行选择讲解可让学习较好的学生自学。

在 VB6.0 中新增了文件系统对象( File System Object 缩写为 FSO )模型,它提供了一整套对文件系统进行管理和操作的方法和属性,包括:获得驱动器的信息,如驱动器列表、盘符、磁盘空间等。获得文件夹的或文件的信息,如名称、创建、修改日期等。检查指定的文件夹或文件是否存在及在什么位置。文件夹或文件的删除、移动、复制等通常操作。对文本文件的读写操作。

Page 48: 第九章  文 件

9.7.1 FileSystemObject 对象

FileSystemObject 对象是 FSO 模型中的核心对象,在应用程序中使用 FSO 的编程主要步骤是:创建一个 FileSystemObject 对象。 根据应用程序的需要,通过调用 FileSystemObject 对象中的方法来创建一个新的对象,如 Drive 对象、 Folder 对象等。 通过读取新对象的属性值获得用户所需的信息或利用对象的方法进行所需的操作。

1 .创建 FileSystemObject 对象

有两种方法创建 FileSystemObject 对象:

Page 49: 第九章  文 件

方法一、 使用 New 关键字声明一个变量为 FileSystemObject

对象类型。其语法格式:Dim < 变量名 > As New FileSystemObject

例如: Dim fsox As New FileSystemObject

方法二、使用 CreateObject 方法创建一个 FileSystemObject 对象,其语法格式:Set < 变量名 >=CreateObject("Scripting.FileSystenObject ")

例如: Dim fsox As Object

Set fsox=CreateObject("Scripting.FileSystenObject ")

Page 50: 第九章  文 件

2 . FileSystemObject 对象的属性

FileSystemObject 的属性只有一个 Drives, 它是系统中所有 Drive 对象的对象集合,用户可以获取当前计算机系统中所有驱动器的信息。例如 下面的代码可显示系统能够使用的驱动器名称:Dim fsox As New FileSystemObject

For Each I In fsox .Drives

Print i.DriveLetter

Next I

Page 51: 第九章  文 件

2 . FileSystemObject 对象的方法

FileSystemObject 对象有许多方法 ,在 FSO 模型中对文件的管理就是通过这些方法来完成的。 FileSystemObject 对象的方法见教材 Pg.249 表 9.7

Page 52: 第九章  文 件

9.7.2 Drive 对象

通过 Drive 对象可以获得计算机上关于驱动器的信息。诸如驱动器有多少可用空间,其共享名称是什么,等等。

要使用 Drive 对象,首先要声明一个驱动器类型的变量,接着使用 FileSystemObject 对象的 GetDrive 方法返回一个Drive 对象,例如: Dim drv As Drive

Set drv=fsox.GetDrive(“C:”)

Drive 对象常用的属性见表 9.7

Page 53: 第九章  文 件

例 9.7 使用 FileSystemObject 对象,编写一个来显示当前计算机系统中一指定驱动器的信息的函数 ShowdriveSiz

e 。

9.7.3 Folder 对象 要使用 Folder 对象,首先要声明一个文件夹类型的变量,接着使用 FileSystemObject 对象的 Get Folder 方法返回一个 Folder 对象,例如:Dim fld as Folder

Set fld=fsox.GetFolder(“C:\Mydir”)

Folder 对象常用的属性见教材 P251 表 9.8

Page 54: 第九章  文 件

例 9.8 使用 Folder 对象和 FileSystemObject 对象来操作文件夹,并显示相关信息。

程序运行在立即窗口的输出结果下图

Page 55: 第九章  文 件

9.7.4 File 对象

要使用 File 对象,首先要声明一个文件类型的变量,接着使用 FileSystemObject 对象的 GetFile 方法来返回一个File 对象,例如:Dim fil As File

Set fil=fsox.GetFile("C:\Lcstxt\t1.txt")

File 对象常用的属性见表 9.9

例 9.9 要把“ C:\Mydir\t1.txt” 文件以同名复制到 A 盘新建的“ A:\temp” 文件夹下,要考虑到软盘插入否和软盘容量够否 。

Page 56: 第九章  文 件

9.7.5 TestStream 对象

FileSystemObject 对象模型还提供了 TextStrema 对象,用来读写顺序文件。

1. 声明和创建 TextStream 对象

声明 TextStrem 对象例子如下:Dim ts As TextStream

可分别通过 FileSystemObject 对象、 File 对象来创建、打开 Te

xtStream 对象。(1)    通过 FileSystemObject 对象打开” C:\Mydir\t1.txt”:

Set ts=fsox.Open TextFile(“C:\t2.txt”, _

ForReading,True)

第 3 个参数表示当要打开的文件不存在,是否要创建一个新文件。

Page 57: 第九章  文 件

2 通过 File 对象打开” C:\Mydir\t1.txt”:

Set fil=fsox.GetFile(“C:\Mydir\t1.txt”)

Set ts=fil.OpenAsTextStream(ForReading)

上述两种方法均以读的方式打开文本文件。其中: ForReading 表示从文件中读出信息。此外,还有 F

orWriting 表示向文件写信息; ForAppending向文件添加信息。

2 .常用属性

3 .常用方法

例 9.10

Page 58: 第九章  文 件

本章小结:

作业: