第六章 文件管理

23
第第第 第第第第

Upload: zahir-best

Post on 03-Jan-2016

67 views

Category:

Documents


0 download

DESCRIPTION

第六章 文件管理. 程序设计中,文件是十分重要的,许多情况下,使用文件可以高效地解决实际问题。有用的数据在后备存储器上以文件的形式存储后,我们就可以通过文件对数据进行访问、操作以及检索,这称为文件管理。 6.1 文件的分类 根据文件访问类型的不同,可以将文件分为三类:顺序文件、随机文件和二进制文件。 (1) 顺序文件 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第六章      文件管理

第六章 文件管理

Page 2: 第六章      文件管理

程序设计中,文件是十分重要的,许多情况下,使用文件可以高效地解决实际问题。有用的数据在后备存储器上以文件的形式存储后,我们就可以通过文件对数据进行访问、操作以及检索,这称为文件管理。

6.1 文件的分类 根据文件访问类型的不同,可以将文件分为三类:

顺序文件、随机文件和二进制文件。 (1) 顺序文件 所谓顺序文件就是普通的文本文件,是比较简单

的文件结构,文件中的记录一个接一个地逐次存放,而且只知道第一个记录的存储位置,其它记录的位置用户无法知道。当用户需要查找一个数据时,只能从文件头开始,一个记录、一个记录地顺序读取,直到找到为止。

Page 3: 第六章      文件管理

( 2 )随机文件 随机文件又称直接存取文件,简称随机文

件或直接文件。与顺序文件不同,随机文件可以按任意次序读写,但要求每一行或每个记录的长度必须相同,而且每个记录都有一个记录号。在写入数据时,只要指定记录号,就可以把数据直接存入指定位置。而在读取数据时,只要给出记录号,就能直接读取该记录。

( 3 )二进制文件 二进制文件是以二进制方式保存的文

件, Visual Basic 假设数据不按照固定的方式组织,而且允许程序按照所需的方式访问文件。

Page 4: 第六章      文件管理

6.2 文件的基本操作 文件的基本操作包括文件的打开、文件的读

写、文件的关闭文件的拷贝、文件的删除和文件的添加等。

6.2.1 文件的打开(建立) 在 Visual Basic 中使用 Open 语句打开或建

立一个文件,并指定一个文件号和文件的打开模式等。 Open 语句的格式如下:

Open < 文件名 > For 模式 [Access 存取类型 ][ 锁定 ] As [#] < 文件号 > [Len = 记录长度 ]

Page 5: 第六章      文件管理

格式中的 Open 、 For 、 As 以及 Len 为关键字,带方括号的字段为可选项。其它参量含义如下:

( 1 ) < 文件名 > 是必要的字符表达式,用以指定要打开或建立的文件名,该文件名可以包含目录、文件夹及驱动器。

( 2 )模式用来指定文件的输入输出方式,可以为下述操作之一:

Output :指定顺序输出方式。 Input :指定顺序输入方式。 Append :指定顺序输出方式。与 Output 不同的是,用

Append 方式打开文件时,文件指针被定位在文件末尾。如对文件进行写操作,则写入的数据附加到原来文件的后面,也称为追加。

Random :指定随机存取方式。 Binary :指定二进制方式文件,这种方式下,可以用 Get 或

Put 语句对文件中的任何字节位置的信息进行读写。 如果没有指定文件的输入输出方式,则以缺省的

Random 方式打开文件。

Page 6: 第六章      文件管理

( 3 ) Access 是可选的关键字,说明对打开文件进行的操作种类,有 Read (只读)、 Write (只写)或 Read Write (读 / 写)操作。“操作种类”指出了打开的文件中所进行的操作。如果要打开的文件已由其它过程打开,则不允许指定存取类型,否则 Open 出错,并产生出错信息。

( 4 ) [ 锁定 ] 是可选的关键字,只用在多用户或多进程环境中,说明其它进程或用户能够完全共享)、Lock Read (不允许其它进程读该文件)、 Lock Write (不允许其它进程写该文件)和 Lock Read Write (不允许其他进程读写该文件)对打开文件进行的操作,类型包括 Shared (该文件。

如果不使用 Lock 子句,默认为 Lock Read Write 。

Page 7: 第六章      文件管理

( 5 ) < 文件号 > 是必需的一个有效的文件号,范围在 1 到 511 之间。执行 Open 语句时,打开文件的文件号与一个具体的文件相关联,其它输入输出语句或函数通过文件号与文件发生关系。

( 6 )记录长度是可选的小于或等于 32767(字节)的一个数。对于随机访问方式打开的文件,该值就是记录长度。对于顺序文件,该值就是缓冲字节数,即确定缓冲区的大小,缓冲区越大,占用空间越多,文件的存取速度越快。

Page 8: 第六章      文件管理

Open 语句兼有打开文件和建立文件两种功能。对一个数据文件进行读、写、修改或增加数据之前,如果 < 文件名 > 指定的文件不存在,用 Input 方式打开文件时,将提示“文件未找到”;用 Append 、 Binary 、 Output 或Random 方式打开文件时,则建立相应的文件

6.2.2 文件的关闭 文件的读写操作结束后,可以通过 Close

语句将 Open 语句打开的输入 / 输出文件关闭,一般格式为:

Close [[#] 文件号 ][ , [#] 文件号 ]…

Page 9: 第六章      文件管理

6.2.3 文件的删除 删除文件可以用 Kill 语句实现,具体格为: Kill 文件名 6.2.4 拷贝文件 用 FileCopy 语句可以把源文件拷到目标文

件,拷贝后两个文件的内容完全一样,例如: FileCopy ”Soure.dat”, “Target.dat”.

6.2.5 建立和删除文件目录 在 VB 中可以通过 MkDir 语句建立一个目录,

RmDir 语句删除一个文件目录。

Page 10: 第六章      文件管理

6.2.6 文件管理语句和函数 1 . FreeFile 函数 用 FreeFile 函数可以得到一个在程序中没有使用

的文件号。一般格式为: FreeFile[(rangenumber)]

[ 例 6-1] 使用 FreeFile 函数获得文件号。 2 . FileLen 函数 此函数返回以“文件名”参数指定的文件的长度,

单位为字节。 3 . Loc 函数 Loc 函数返回在由文件号指定的文件中读写的位

置。

Page 11: 第六章      文件管理

4 . LOF 函数 LOF 函数将返回指定文件的字节数。5 . EOF 函数 EOF 函数返回一个表示文件指针是否到

达文件末尾的标志。一般格式为: EOF ( Filenumber ) 文件指针如果到了文件末尾, EOF 函数返回 True ( -1 ),否则返回 False ( 0 )。

6 . Dir 函数 Dir 函数用来测试一个指定的路径下是否

有指定的文件和文件夹(目录)

Page 12: 第六章      文件管理

6.3 顺序文件 6.3.1 顺序文件的写操作 顺序文件的写操作分为三步,即打开文件、

写入文件和关闭文件,其中打开文件和关闭文件分别用 Open 语句和 Close 文件来完成,而写入文件,则要用到 Print# 或 Write# 语句来完成。

1 . Print # 语句 语句的一般格式如下: Print # 文件号 , [[Spc(n)|Tab(n)]]

[expression][charpos]

Page 13: 第六章      文件管理

[例6-2] 演示如何在指定目录下的文件中用Print# 语句添加职工信息。

2 . Write # 语句 和 Print# 语句一样,用 Write# 语句可以

把数据写入顺序文件中。它的语法格式如下: Write # 文件号 , [outputlist]

[例6-3] 把一组学生的基本信息数据记录从键盘输入,并存入到 C盘的 Stu.dat 文件中。

学生的数据包括姓名、年龄、籍贯、系别,用一个记录类型来定义。

Page 14: 第六章      文件管理

6.3.2 顺序文件的读操作 顺序文件的读操作由 Input # 语句和 Line Input

# 语句实现: 1 . Input # 语句 格式如下: Input # 文件号 , 变量列表 [例6-4] 编程序演示从顺序文件中读取数据。 2 . Line Input 语句 使用 Line Input 语句可以从顺序文件中读取一个

完整的行,并赋给一个字符串变量。具体格式如下: Line Input # 文件号 , 字符串变量名

Page 15: 第六章      文件管理

[例6-5] 将一个磁盘文件的内容读到内存,并在文本框中逐行显示出来。例如我们利用记事本建立一个名为“ Sample.dat” 的文件,并输入以下内容:

文化似乎不直接关系国计民生,但 却直接关系民族的性格、精神、意 识、言语和气质。抽出文化这根神 经,一个民族将成为植物人。 该文件有四行,每行均用回车键结束。

Page 16: 第六章      文件管理

6.4 随机文件 随机文件跟数据库相似,被组织成记录

(通常是相同长度的),并以固定长度的记录为单位进行存取,每一个数据项可以有不同的数据类型和宽度。

6.4.1 随机文件操作 1. 定义记录类型 2.打开随机文件 用 Open 语句打开随机文件的格式为: Open pathname [For Random] As filename

Len = reclength

Page 17: 第六章      文件管理

3.随机文件的读写操作 随机文件的读操作用 Get 语句来完成,

一般格式如下: Get # 文件号 , [ 记录号 ], 变量 随机文件的写操作通过 Put 语句来实现,

一般格式如下: Put # 文件号 , [ 记录号 ], 变量 4.随机文件中记录的替换、增加与删除 5.关闭文件

Page 18: 第六章      文件管理

6.5 文件系统控件 文件系统控件的作用是显示关于驱动器、

目录和文件的信息,并从中选择以便进行进一步的操作。 VB 中提供了三种文件系统控件:驱动器列表框( DriveListBox )、目录列表框( DirListBox )和文件列表框( FileListBox )。利用它们的组合可以设计出各种处理文件的对话框程序。

6.5.1 驱动器列表框 使用格式为: 驱动列表框名称 .Drive[= 驱动器名 ]

Page 19: 第六章      文件管理

6.5.2 目录列表框 目录列表框的作用用来显示当前驱动器上的目录。

它有一个在设计模式下不可用的 Path属性,用来读取或指定当前工作目录。

6.5.3 文件列表框 文件列表框的作用是显示当前目录的文件名。( 1 ) Path属性( 2 ) Pattern属性 ( 3 ) FileName属性( 4 ) MultiSelect属性 ( 5 ) ListCount属性

Page 20: 第六章      文件管理

[例6-7] 设计一图片浏览器,界面如图 5-5 所示。要求编写代码使驱动器列表框 Drive1 、目录列表框 Dir1 和文件列表框 File1 同步操作;文件列表框中只显示扩展名为 Bmp 和 Jpg 的图片文件;用鼠标点击文件列表框中的某个图片文件时,窗体上的图像框 Image1 同时显示该图片。

Page 21: 第六章      文件管理

6.6 文件系统对象 在 Visual Basic6.0 中新增加了文件系统对象( File System Object ),简称 FSO 。它提供了一套新的对文件系统进行管理和操作的方法和属性,使得对文件的管理更加简单。

由于 FSO 不是 Visual Basic 的内部对象,而是 Scripting 类型库中的对象。因此,在使用此对象时必须先在工程中引用 FSO 对象。引用的方法是:从“工程”下拉菜单中执行“引用”命令,在打开的“引用”对话框中选中“ Microsoft Scripting Runtime” 选项,即可将 FSO 对象模型引入到工程中了。

Page 22: 第六章      文件管理

6.6.1 FileSystemObject 对象 FSO 对象模型编程主要包括 3 项任务:创

建一个 FileSystemObject 对象、对新创建的对象使用适当的方法、访问该对象的属性。

1.创建 FileSystemObject 对象 2.FileSystemObject 对象的属性 3. FileSystemObject 对象的方法 6.6.2 Drive 对象 要使用 Drive 对象,首先要声明一个驱动

器类型的变量,接着使用 FileSystemObject对象的 GetDrive 方法来返回一个 Drive 对象,再通过驱动器变量的属性来获得所需信息。

Page 23: 第六章      文件管理

[例6-8] 查看驱动器信息 6.6.3 Folder 对象 [例6-9] 编写一个文件夹管理程序,用于创建或

删除文件夹,还可以对文件夹进行更名操作。 6.6.4 File 对象 6.6.5 数据文件的创建以及读、写方法