第六章 文件管理
程序设计中,文件是十分重要的,许多情况下,
使用文件可以高效地解决实际问题。有用的数据在后
备存储器上以文件的形式存储后,我们就可以通过文
件对数据进行访问、操作以及检索,这称为文件管理。
6.1 文件的分类
根据文件访问类型的不同,可以将文件分为三类:
顺序文件、随机文件和二进制文件。
(1)顺序文件
所谓顺序文件就是普通的文本文件,是比较简单
的文件结构,文件中的记录一个接一个地逐次存放,
而且只知道第一个记录的存储位置,其它记录的位置
用户无法知道。当用户需要查找一个数据时,只能从
文件头开始,一个记录、一个记录地顺序读取,直到
找到为止。
( 2)随机文件
随机文件又称直接存取文件,简称随机文
件或直接文件。与顺序文件不同,随机文件可
以按任意次序读写,但要求每一行或每个记录
的长度必须相同,而且每个记录都有一个记录
号。在写入数据时,只要指定记录号,就可以
把数据直接存入指定位置。而在读取数据时,
只要给出记录号,就能直接读取该记录。
( 3)二进制文件
二进制文件是以二进制方式保存的文件,
Visual Basic假设数据不按照固定的方式组织,
而且允许程序按照所需的方式访问文件。
6.2 文件的基本操作
文件的基本操作包括文件的打开、文件的
读写、文件的关闭文件的拷贝、文件的删除和
文件的添加等。
6.2.1 文件的打开(建立)
在 Visual Basic中使用 Open语句打开或建
立一个文件,并指定一个文件号和文件的打开
模式等。 Open语句的格式如下:
Open <文件名 > For 模式 [Access 存取类
型 ][锁定 ] As [#] <文件号 > [Len =记录长度 ]
格式中的 Open,For,As以及 Len为关键字,带方括号
的字段为可选项。其它参量含义如下:
( 1) <文件名 > 是必要的字符表达式,用以指定要打开或建
立的文件名,该文件名可以包含目录、文件夹及驱动器。
( 2)模式用来指定文件的输入输出方式,可以为下述操作之
一:
? Output:指定顺序输出方式。
? Input:指定顺序输入方式。
? Append:指定顺序输出方式。与 Output不同的是,用
Append方式打开文件时,文件指针被定位在文件末尾。如
对文件进行写操作,则写入的数据附加到原来文件的后面,
也称为追加。
? Random:指定随机存取方式。
? Binary:指定二进制方式文件,这种方式下,可以用 Get或
Put语句对文件中的任何字节位置的信息进行读写。
如果没有指定文件的输入输出方式,则以缺省的
Random方式打开文件。
( 3) Access是可选的关键字,说明对打开文件进行
的操作种类,有 Read(只读),Write(只写)或
Read Write(读 /写)操作。“操作种类”指出了打
开的文件中所进行的操作。如果要打开的文件已由
其它过程打开,则不允许指定存取类型,否则 Open
出错,并产生出错信息。
( 4) [锁定 ]是可选的关键字,只用在多用户或多进程
环境中,说明其它进程或用户能够完全共享)、
Lock Read(不允许其它进程读该文件),Lock
Write(不允许其它进程写该文件)和 Lock Read
Write(不允许其他进程读写该文件)对打开文件进
行的操作,类型包括 Shared(该文件。
如果不使用 Lock子句,默认为 Lock Read
Write。
( 5) <文件号 >是必需的一个有效的文件号,
范围在 1到 511之间。执行 Open语句时,打开
文件的文件号与一个具体的文件相关联,其
它输入输出语句或函数通过文件号与文件发
生关系。
( 6)记录长度是可选的小于或等于 32767(字
节)的一个数。对于随机访问方式打开的文
件,该值就是记录长度。对于顺序文件,该
值就是缓冲字节数,即确定缓冲区的大小,
缓冲区越大,占用空间越多,文件的存取速
度越快。
Open语句兼有打开文件和建立文件两种功
能。对一个数据文件进行读、写、修改或增加
数据之前,如果 <文件名 >指定的文件不存在,
用 Input方式打开文件时,将提示“文件未找
到”;用 Append,Binary,Output或 Random
方式打开文件时,则建立相应的文件
6.2.2 文件的关闭
文件的读写操作结束后,可以通过 Close
语句将 Open语句打开的输入 /输出文件关闭,
一般格式为:
Close [[#]文件号 ][,[#]文件号 ]…
6.2.3 文件的删除
删除文件可以用 Kill语句实现,具体格为:
Kill 文件名
6.2.4 拷贝文件
用 FileCopy语句可以把源文件拷到目标文
件,拷贝后两个文件的内容完全一样,例如:
FileCopy,Soure.dat”,“Target.dat”.
6.2.5 建立和删除文件目录
在 VB中可以通过 MkDir语句建立一个目录,
RmDir语句删除一个文件目录。
6.2.6 文件管理语句和函数
1,FreeFile 函数
用 FreeFile函数可以得到一个在程序中没有使用
的文件号。一般格式为:
FreeFile[(rangenumber)]
[例 6-1] 使用 FreeFile函数获得文件号。
2,FileLen 函数
此函数返回以“文件名”参数指定的文件的长度,
单位为字节。
3,Loc 函数
Loc函数返回在由文件号指定的文件中读写的位
置。
4,LOF函数
LOF函数将返回指定文件的字节数。
5,EOF 函数
EOF函数返回一个表示文件指针是否到
达文件末尾的标志。一般格式为:
EOF( Filenumber)
文件指针如果到了文件末尾,EOF函数
返回 True( -1),否则返回 False( 0)。
6,Dir 函数
Dir函数用来测试一个指定的路径下是否
有指定的文件和文件夹(目录)
6.3 顺序文件
6.3.1 顺序文件的写操作
顺序文件的写操作分为三步,即打开文件、
写入文件和关闭文件,其中打开文件和关闭文
件分别用 Open语句和 Close文件来完成,而写
入文件,则要用到 Print#或 Write#语句来完成。
1,Print # 语句
语句的一般格式如下:
Print #文件号,
[[Spc(n)|Tab(n)]][expression][charpos]
[例 6-2] 演示如何在指定目录下的文件中用
Print#语句添加职工信息。
2,Write # 语句
和 Print# 语句一样,用 Write# 语句可以
把数据写入顺序文件中。它的语法格式如下:
Write # 文件号,[outputlist]
[例 6-3] 把一组学生的基本信息数据记录从键
盘输入,并存入到 C盘的 Stu.dat文件中。
学生的数据包括姓名、年龄、籍贯、系别,
用一个记录类型来定义。
6.3.2 顺序文件的读操作
顺序文件的读操作由 Input #语句和 Line Input
#语句实现:
1,Input # 语句
格式如下:
Input # 文件号,变量列表
[例 6-4] 编程序演示从顺序文件中读取数据。
2,Line Input 语句
使用 Line Input语句可以从顺序文件中读取一个
完整的行,并赋给一个字符串变量。具体格式如下:
Line Input # 文件号,字符串变量名
[例 6-5] 将一个磁盘文件的内容读到内存,并
在文本框中逐行显示出来。例如我们利用记
事本建立一个名为,Sample.dat”的文件,并
输入以下内容:
文化似乎不直接关系国计民生,但
却直接关系民族的性格、精神、意
识、言语和气质。抽出文化这根神
经,一个民族将成为植物人。
该文件有四行,每行均用回车键结束。
6.4 随机文件
随机文件跟数据库相似,被组织成记录
(通常是相同长度的),并以固定长度的记录
为单位进行存取,每一个数据项可以有不同的
数据类型和宽度。
6.4.1 随机文件操作
1,定义记录类型
2.打开随机文件
用 Open语句打开随机文件的格式为:
Open pathname [For Random] As filename
Len = reclength
3.随机文件的读写操作
随机文件的读操作用 Get语句来完成,一
般格式如下:
Get # 文件号,[记录号 ],变量
随机文件的写操作通过 Put语句来实现,
一般格式如下:
Put # 文件号,[记录号 ],变量
4.随机文件中记录的替换、增加与删除
5.关闭文件
6.5文件系统控件
文件系统控件的作用是显示关于驱动器、
目录和文件的信息,并从中选择以便进行进一
步的操作。 VB中提供了三种文件系统控件:驱
动器列表框( DriveListBox)、目录列表框
( DirListBox)和文件列表框( FileListBox)。
利用它们的组合可以设计出各种处理文件的对
话框程序。
6.5.1 驱动器列表框
使用格式为:
驱动列表框名称,Drive[=驱动器名 ]
6.5.2 目录列表框
目录列表框的作用用来显示当前驱动器上的目录。
它有一个在设计模式下不可用的 Path属性,用来读
取或指定当前工作目录。
6.5.3 文件列表框
文件列表框的作用是显示当前目录的文件名。
( 1) Path属性
( 2) Pattern属性
( 3) FileName属性
( 4) MultiSelect属性
( 5) ListCount属性
[例 6-7] 设计一图片浏览器,界面如图 5-5所示。
要求编写代码使驱动器列表框 Drive1、目录列表
框 Dir1和文件列表框 File1同步操作;文件列表框
中只显示扩展名为 Bmp和 Jpg的图片文件;用鼠
标点击文件列表框中的某个图片文件时,窗体上
的图像框 Image1同时显示该图片。
6.6 文件系统对象
在 Visual Basic6.0中新增加了文件系统对
象( File System Object),简称 FSO。它提
供了一套新的对文件系统进行管理和操作的方
法和属性,使得对文件的管理更加简单。
由于 FSO不是 Visual Basic的内部对象,
而是 Scripting类型库中的对象。因此,在使用
此对象时必须先在工程中引用 FSO对象。引用
的方法是:从“工程”下拉菜单中执行“引用”
命令,在打开的“引用”对话框中选中
,Microsoft Scripting Runtime”选项,即可将
FSO对象模型引入到工程中了。
6.6.1 FileSystemObject对象
FSO对象模型编程主要包括 3项任务:创
建一个 FileSystemObject对象、对新创建的
对象使用适当的方法、访问该对象的属性。
1.创建 FileSystemObject对象
2.FileSystemObject对象的属性
3,FileSystemObject对象的方法
6.6.2 Drive对象
要使用 Drive对象,首先要声明一个驱动
器类型的变量,接着使用 FileSystemObject
对象的 GetDrive方法来返回一个 Drive对象,
再通过驱动器变量的属性来获得所需信息。
[例 6-8] 查看驱动器信息
6.6.3 Folder对象
[例 6-9] 编写一个文件夹管理程序,用于创建或
删除文件夹,还可以对文件夹进行更名操作。
6.6.4 File对象
6.6.5 数据文件的创建以及读、写方法