230 likes | 350 Views
第六章 文件管理. 程序设计中,文件是十分重要的,许多情况下,使用文件可以高效地解决实际问题。有用的数据在后备存储器上以文件的形式存储后,我们就可以通过文件对数据进行访问、操作以及检索,这称为文件管理。 6.1 文件的分类 根据文件访问类型的不同,可以将文件分为三类:顺序文件、随机文件和二进制文件。 (1) 顺序文件
E N D
程序设计中,文件是十分重要的,许多情况下,使用文件可以高效地解决实际问题。有用的数据在后备存储器上以文件的形式存储后,我们就可以通过文件对数据进行访问、操作以及检索,这称为文件管理。 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语句时,打开文件的文件号与一个具体的文件相关联,其它输入输出语句或函数通过文件号与文件发生关系。(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-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.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 数据文件的创建以及读、写方法