第 11章 文件本章的学习要点
文件的分类
文件操作语句和函数
顺序文件的读写
随机文件的读写与记录的操作计算机的数据文件按数据的存放方式分为三种类型:
1,顺序型文件连续存放的文本数据。此文件中通常记录与记录之间的分界符为回车符;记录中字段与字段之间的分界符为逗号。
2,随机型文件有固定记录结构长度的文本数据。随机文件的每一个记录都有固定的长度,每一个记录都有一个记录号,在存入数据时,只需指明是第几个记录号,就可以把数据存入制定位置。
3,二进制型文件存储二进制数据。数据以二进制格式保存,存储单位为字节。
11.1 文件概述
11.2 顺序文件
1.顺序文件的打开顺序文件按行存储,依次将记录顺序存储,当读出某些数据时,需要从第一条记录开始读取数据,直到找到所需要的记录为止。
在对文件进行操作之前,必须打开文件,同时要通知操作系统对文件进行读操作还是写操作,将数据存到什么地方。
语法格式:
Open,文件名,For 模式 As [#] 文件号 [len=记录长度 ]
1)文件名:文件名可以是字符串常量也可以是字符串变量。
2)模式:
OutPut:打开一个文件,对该文件进行写操作,即将数据写入磁盘文件。 Output选项模式打开一个不存在的文件时,VB会在磁盘上创建一个新的顺序文件。文件打开后文件的指针位于文件开头,准备向文件写入数据。若磁盘上有同名文件则该文件将被覆盖。
Input:打开一个文件,对该文件进行读操作,即将数据从文件中读入内存。注:文件必须存在,否则将出现错误。
Append:打开一个文件,在该文件末尾追加记录。打开或创建一个新的顺序文件,文件打开后文件指针位于文件的末尾准备向文件的尾部追加数据。若磁盘上没有该文件,则创建一个新的文件。
11.2 顺序文件
3)文件号:文件号是一个介于 1-511之间的整数,打开一个文件时需要指定一个文件号,这个文件号就代表该文件,
直到文件关闭后这个号才可以被其他文件所使用,同时被打开的每个文件的文件号不能同。
例,
含义是:打开 D:\ sj目录下的 aaa文件供写入数据,文件号为 # 1。
含义是:打开当前目录下的 bbB.txt文件供读数据,文件号为 # 2。
11.2 顺序文件
Open "D:\sj\aaa" For Output As #1
Open " bbB.txt" For Input As #2
2,顺序文件的关闭结束各种读写操作后,必须将文件关闭,否则会造成数据丢失。
关闭文件的命令是 Close语句。
语法格式:
说明:
( 1)文件号是指利用 Open语句打开文件时指定的文件号。
( 2)此语句可以同时关闭多个已打开的文件,用逗号分隔文件号。
( 3)若省略文件号,表示关闭所有已经打开的文件
11.2 顺序文件
Close [#文件号 1][,#文件号 2]……
例,Close #1,#2,#3 ’ 关闭文件号分别为 1,2,3的文件。
Close ’ 关闭所有已打开的文件。
3.顺序文件的写操作以 OutPut和 Append模式打开的文件可以进行写操作,对顺序文件能够进行写操作的语句有 Print #和 Write #两个,用来向已经打开的顺序文件写入数据。
1,Print #语句语法格式:
说明:此语句的功能和 Print语句类似,不同的是,此处是将输出列表项写入到文件中。
( 1)输出列表项可以是常量、变量或表达式,输出列表项多于一个时,各项之间可以用 逗号 或 分号 分隔,其含义与 Print语句的紧凑格式和标准格式相同。
( 2)在输出列表项中也可使用 Spc(n)函数向文件中写 n个空格,
或使用 Tab(n)函数指定其后的输出项从第 n列输出。
11.2 顺序文件
Print #文件号,[输出列表 ]
2,Write #语句语法格式:
Write #语句的功能和 Print #语句的功能基本相同,都是将输出项写入指定文件中,不同的是:
( 1) Write #语句在文件中的各个输出项都以紧缩格式输出,
并自动在输出项之间插入逗号分隔。
( 2) Write #语句为文件中的字符串加上双引号。
11.2 顺序文件
Write #文件号,[输出列表 ]
4,顺序文件的读操作可以使用 Input #语句,Line Input #语句或者 Input()函数从文件中读出(输入)数据。
与读文件操作有关的两个函数:
1,Input #语句语法格式:
说明:该语句作用是将从文件中读出的数据分别赋给指定的字符变量。变量个数多于一个时,用逗号分隔。
11.2 顺序文件
LOF(n):返回某文件 n的字节数。
EOF(n):检查文件 n是否到达文件尾。
Input #文件号,变量列表
11.2 顺序文件
2,Line Input #语句语法格式:
该语句从指定文件号的文件中读出一行数据并将其赋值给字符串变量。
注意,Line Input #语句与 Input#语句类似,但 Input#语句读取的是数据项,而 Line Input #语句读取的是一行数据。
3,Input()函数语法格式:
该语句可以读取指定字符长度的数据。也可写为 Input$()。
Line Input #文件号,变量列表
Input( length,#<文件号 >)
11.3 随机文件随机文件又称为记录文件,是由固定长度的记录顺序排列而成,每个数据项称为一个字段。各记录的数据项数目相等,
对应的数据项数据类型相同。
记录是读写随机文件的最小单位,可将文件指针定位在任意一条记录上进行读或写,便于文件的查询和修改。
1,随机文件的打开与关闭
1)打开随机文件操作语法格式:
其中,“记录长度”等于各字段长度之和,以字节为单位。
如果省略,Len=记录长度”,则记录默认的长度为 128个字节。
Open,文件名” For Random As #文件号 [Len=记录长度 ]
11.3 随机文件
2)关闭随机文件操作语法格式:
与顺序文件类似,可以同时关闭多个已经打开的随机文件,
或者关闭全部文件。
2,随机文件的读操作与写操作
1)读取随机文件记录语法格式:
Get命令是从磁盘文件中将一条由记录号指定的记录内容读入记录变量中;记录号的取值范围是 1~ 214783647,表示对第几条记录进行操作,若忽略,表示对当前记录的下一条记录进行操作。
Close [#文件号 1] [,#文件号 2]?
Get #文件号,记录号,变量名
11.3 随机文件
2)写随机文件记录语法格式:
Put命令是将一个记录变量的内容写入所打开的磁盘文件指定的记录位置;记录号取值同上,表示写入的是第几条记录,如果忽略不写,则表示在当前记录后插入一条记录。
Put #文件号,记录号,变量名
11.4 二进制文件二进制文件的基本元素是字节,没有记录的概念,她存放的是数据的二进制的值。
二进制文件占用的外存空间小,使用文本编辑软件不能查看二进制文件的内容。该模式是最原始的文件类型,直接把二进制码存放在文件中,以字节数来定位数据,允许程序按所需的任何方式组织和访问数据,也允许对文件中各字节数据进行存取和访问。
1,二进制文件的打开和关闭
1)打开二进制文件操作语法格式:
打开或建立二进制文件要使用 Binary方式,不用,Len=记录长度”限定记录长度。
Open,文件名” For Binary As #文件号
11.4 二进制文件
2)关闭二进制文件操作语法格式:
与关闭其他文件一样,使用 Close语句可以关闭指定文件号的二进制文件。当文件号省略时,将关闭所有打开的文件。
Close [#文件号 1] [,#文件号 2]?
11.4 二进制文件
2,二进制文件的读写操作该模式与随机模式类似,其读写语句也是 Get和 Put,区别是二进制模式的访问单位是字节,随机模式的访问单位是记录。
语法格式:
( 1) Get #文件号,字节数,变量名
( 2) Put #文件号,字节数,变量名注意:
1)在二进制文件读写中常用到 Seek函数和 Seek语句。函数 Seet返回当前文件指针的位置;语句 Seek将文件指针定位到字节数处。
2)在读取时,二进制文件不需要指定读取的字符长度,使用 Get
读取不定长字符串时,读取的字符串长度等于该字符串原有的长度。