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