第 7 章 文 件
教学要求 掌握文件管理控件的主要属性、事件和方法★ 掌握文件的基本概念 掌握文件的常用函数、语句 掌握 顺序文件的读、写操作★ 了解随机(记录)文件 了解二进制文件 2
教学内容 7.1 文件管理控件 7.2 文件处理 7.3 顺序文件 7.4 随机文件处理 3
7.1 文件管理控件 驱动器列表框 DriveListBox 目录列表框 DirListBox 文件列表框 FileListBox 7.1 文件管理控件 VB 提供了驱动器列表框、目录列表框和文件列表框三个特殊的控件,将他们组合起来使用,可以创建与文件操作有关的界面。 驱动器列表框 DriveListBox 目录列表框 DirListBox 文件列表框 FileListBox 4
7.1.1 驱动器列表框(DriveListBox) [功能]: 一个下拉式列表框,显示当前系统的所有驱动器列表,顶端显示的是当前选定的驱动器。 [常用属性]: Name:名称属性,缺省时该属性值为Drive1; Drive:当前驱动器属性,该属性为运行态属性;可以用于返回在驱动器列表框中当前选取的驱动器号,也可用于指定在驱动器列表框顶端显示的驱动器; [常用事件]: Change:当用户在驱动器列表框中选择一个驱动器,或在列表框顶端输入一个驱动器标识,或通过赋值语句修改了驱动器列表框的Drive属性都会激活该事件。 一般在此事件中,用drive属性更新目录列表框的path属性,保持驱动器列表框和目录列表框的同步变化。 5
[常用语句]: 格式:ChDrive Drive 功能:改变当前工作驱动器—— 对文件进行存取操作时的缺省驱动器。 注意:该语句的执行与驱动器列表框无关,既不会改变列表框的drive属性,列表框顶端的显示,也不会引发驱动器列表框的Change事件。 同样,在驱动器列表框中选定某驱动器,并不能直接将其变更为当前工作驱动器,必须使用如下语句: ChDrive drive1.drive 6
7.1.2 目录列表框( DirListBox ) [功能]:显示系统当前驱动器的目录结构,并突出显示当前目录。显示从根目录开始,到当前目录这条路径上的所有目录,以及当前目录的下属所有第一级子目录。 -4 -3 -2 -1 1 [目录索引]: 当前突出显示的目录,索引值为-1,紧邻其上的目录为-2,再上一层为-3,依次类推;而当前工作目录的第一个子目录的索引值为0,其他子目录的索引值顺次递增。 7
Path:设置和返回目录列表框中的当前目录,为运行态属性;可以通过如下两种方式设置:一是赋值语句;二是双击目录列表框中某项。 [常用属性]: Name:名称属性,缺省时为Dir1; Path:设置和返回目录列表框中的当前目录,为运行态属性;可以通过如下两种方式设置:一是赋值语句;二是双击目录列表框中某项。 注意:一般目录列表框中显示当前驱动器上的目录,即目录列表框与驱动器列表框必须同步,必须使用如下语句: <目录列表框>.path=<驱动器列表框>.drive 此语句通常在驱动器列表框的Change 事件中执行。 例如: Private Sub Drive1_change() Dir1.path=Drive1.drive End Sub 8
Change: 当用户双击目录列表框中的目录项,或通过赋值语句改变了目录列表框的Path属性,都会引发该事件。 [常用事件] Change: 当用户双击目录列表框中的目录项,或通过赋值语句改变了目录列表框的Path属性,都会引发该事件。 一般在此事件中,用path属性更新文件列表框的path属性,保持文件列表框和目录列表框的同步变化。 [常用语句]: 格式:ChDir Path 功能:改变系统当前工作目录。 说明: (1) ChDir语句改变的是当前驱动器(或指定驱动器)的工作目录,而不能改变工作驱动器; (2)该语句与目录列表框无关,即不会改变目录列表框的当前目录,也不会触发Change事件。 同样,在目录列表框中选定某目录,并不能将其变更为当前工作目录,必须使用如下语句: ChDir dir1.Path 9
7.1.3 文件列表框( FileListBox ) [功能]:显示系统当前目录下的文件列表。 [常用属性]: Name:名称属性,缺省时为File1; Path:设置和返回文件列表中所显示文件的路径,为运行态属性 注意:一般文件列表框中显示当前目录之中的文件,即文件列表框与目录列表框必须同步,必须使用如下语句: <文件列表框>.path=<目录列表框>.path 此语句通常在目录列表框的Change 事件中执行。 例如: Private Sub dir1_change() file11.path=dir1.path End Sub 10
Pattern:文件种类,设置文件列表框显示文件的种类, 缺省为*.* 例: File1.Pattern=“*.txt ; *.frm” FileName:设置和返回文件列表框中将显示的文件名称,为运行态属性; 例: File1.fileName=“d:\*.frm” ListCount:返回文件(组合框、驱动器、目录)列表框中的所列项目的总数,为运行态属性; ListIndex:设置或返回当前控件上所选择项目的“索引值”,为运行态属性,列表框中的第一项为0,第二项为1,依次类推,若文件列表框中一项也没有选定,则返回-1; dir1.listindex = -2 drive1.listindex = 2 11
[常用事件] PathChange: Path属性改变时引发该事件; 注意:在程序中,给文件列表框的Filename属性赋值,也会自动改变它的Path属性,触发本事件。 file1.filename=“c:\config.sys” PatternChange: Pattern属性改变时引发该事件; Click:单击事件。 12
[文件属性]:——指定在文件列表框中显示某类属性的文件 ReadOnly:只读属性,缺省值True; Hidden:隐含属性,缺省值False ; System:系统属性,缺省值False; Archive: 存档属性,缺省值True ; Normal: 通常属性,缺省值True; 说明:当Normal属性为True 时,System 、Hidden 文件不显示;当Normal属性为False 时, 文件类型置为True的可显示。 file1.normal=false file1.system=true 13
7.1.4 组合使用文件管理控件 为使文件管理控件协调工作,关键点是使驱动器、目录、文件列表框同步,通过下述两个事件过程实现: 7.1.4 组合使用文件管理控件 为使文件管理控件协调工作,关键点是使驱动器、目录、文件列表框同步,通过下述两个事件过程实现: ——保证目录列表框与驱动器列表框同步更新。 ——保证文件列表框与目录列表框同步更新。 Private Sub drive1_change() dir1.path=drive1.drive End Sub 来看个例子吧[例7-2]。 Private Sub dir1_change() file11.path=dir1. path End Sub 14
Private Sub Drive1_Change() End Sub Private Sub Dir1_Change() 例:文件控件的组合使用。 Private Sub Drive1_Change() Dir1.Path = Drive1.Drive End Sub Private Sub Dir1_Change() File1.Path = Dir1.Path File1.Pattern = "*.wmf" Private Sub File1_Click() Dim name As String If Right(File1.Path, 1) <> "\" Then name = File1.Path & "\" & File1.FileName Else name = File1.Path & File1.FileName End If Picture1.Picture = LoadPicture( name ) Private Sub Drive1_Change() Dir1.Path = Drive1.Drive ChDrive Drive1.Drive End Sub Private Sub Dir1_Change() File1.Path = Dir1.Path File1.Pattern = "*.wmf" ChDir Dir1.Path Private Sub File1_Click() Picture1.Picture = LoadPicture(File1.filename)
7.2 文件处理 所谓文件,是一组相关信息的集合,是存放在磁盘上一系列相关的字节. 文件访问类型: 7.2 文件处理 文件: 所谓文件,是一组相关信息的集合,是存放在磁盘上一系列相关的字节. 文件访问类型: 顺序访问:从文件头开始,依次访问其中数据,适用于文本文件; 随机访问:适用于以记录形式保存的二进制文件,可以存取任意指定位置的记录; 二进制访问:适用于任意二进制文件 , 以字节为单位存取数据。 16
文件操作 文件操作的一般步骤: 首先将文件“打开”,即将相关信息加载进内存,建立文件与内存中某个文件缓冲区的关联; 文件“存/取”操作; 最后“关闭”文件,即释放文件所占用的文件缓冲区。 文件操作 17
7.2.2文件访问的语句和函数 P136 表7-2 18
对文件进行操作之前,必须用Open语句打开或建立一个文件 [功能]: 为文件的输入输出分配缓冲区,指定文件的存取类型(模式)和存取方式,定义与文件相关联的文件号。 [格式]: Open 文件名 [FOR 模式] [Access 存取类型] [锁定] AS [#]文件号 [Len=记录长度] [说明]: 格式中的Open、 FOR、 Access、AS、Len为关键字 文件名(Filename): 文件的名字,可用字符串或字符型变量表示。可以包括盘符和路径。 3) 模式(mode): 给出随机存取文件的记录长度。 19
说明访问文件的方式: OutPut 设定为顺序输出模式 InPut 设定为顺序输入模式 Append 设定为添加模式,与OutPut方式不同, 以Append方式打开顺序文件时,文件指 针定位在文件末尾,写入的数据添加到 原来文件的后面。 Random 设定为随机访问的模式 Binary 设定为二进制访问模式 如果缺省FOR子句,将以随机访问模式Random打开文件。 20
磁盘文件 磁盘文件 输出 数据 输入 数据 程序 写文件方式: Output Append 读文件方式: Input 21
取值范围在1~511范围之内。执行Open语句时,文件与分配给定的文件号相关联。 4) 存取类型(Access) 用来指定访问文件的类型。可以是: Read 对打开的文件只能进行读操作 Write 对打开的文件只能进行写操作 Read Write 对打开的文件可读可写 5) 文件号(Fileno) 取值范围在1~511范围之内。执行Open语句时,文件与分配给定的文件号相关联。 6) 记录长度(Reclength) 是一个整型表达式,其值≤32767。 对顺序文件,用该参数设定缓冲区的大小。 不指定,缓冲区的缺省值为512个字节。 4) 存取类型(Access) 用来指定访问文件的类型。可以是: Read 对打开的文件只能进行读操作 Write 对打开的文件只能进行写操作 Read Write 对打开的文件可读可写 注意: 如果打开的是顺序文件,在其FOR子句中(FOR Input 或FOR Input或FOR Append)指定了访问文件的模式,则不再需要Access子句。 若用Binary或Random模式打开文件时,不使用Access子句。Visual Basic将依次使用Read Write、Write和Read把文件打开3次。 22
注意: 1) 如果以Output、Append、Random和Binary模式打开一个不存在的文件,Visual Basic会创建一个相应的文件。 2) 在Input、Random和Binary模式下,可用不同的文件号打开同一个文件。但以Output和Append模式打开的文件在关闭之前不能用不同的文件号重复地打开它。 3) 所有当前使用的文件号必须是唯一的。即当前使用的文件号不能再分配给其他文件。 4) 如果以Output模式打开一个已存在的顺序文件,则该文件中原来数据将被覆盖。 23
举 例 P138 1) Open "Exam" FOR Output AS #5 举 例 P138 1) Open "Exam" FOR Output AS #5 如果文件“Exam”不存在,则建立一个新文件,可以将数据写入到文件中去。如果文件“Exam”已存在,则该语句打开已存在的文件,新写入的数据将覆盖原来的数据。 2) Open "Exam" FOR Append AS #5 如果文件“Exam”不存在,则建立一个新文件,否则打开已存在的名为“Exam”的文件,新写入的数据添加到文件的后面,原来的数据仍然存在。 3) Open "Exam" FOR Input AS #5 打开已存在的名为Exam的文件,可从中读出数据。如果文件“Exam”不存在将产生“File Not Found”错误。 24
2、关闭文件 [格式]:Close [[#]<文件号>] [功能]:关闭指定的文件号对应的文件。 释放相应缓冲区和与该文件相联系的文件号。 [说明]: (1)该语句适用于任何文件; (2)语句中可以包含多个文件号,文件号之间用逗号分隔 (3)若语句中缺省文件号参数,则关闭所有用Open语句打开的文件; (4)当应用程序结束时,会自动关闭所有文件。 例1:Close #1,#2 例2:Close 执行Close语句后,结束相应文件的输入输出操作,将文件缓冲区中的数据安全地保存到磁盘上的相应文件中去,释放相应缓冲区和与该文件相联系的文件号。该文件号又可以供其它Open语句使用。 25
[功能]:关闭所有用Open语句打开的文件。 [说明]:适用于任何文件。 3、关闭所有文件——Reset语句 [格式]:Reset [功能]:关闭所有用Open语句打开的文件。 [说明]:适用于任何文件。 例如:用Reset语句同时关闭三个已打开的文件——File1、File2和File3 Private Sub Filerest() Dim Fileno As Integer For Fileno = 1 To 3 Open "File" & Fileno For Output As Fileno Print #Fileno, Fileno Next Fileno Reset End Sub 26
4、锁定和解锁语句——Lock和Unlock语句 lock语句 [格式]:Lock <[#]文件号> [功能]:锁定指定文件号所对应的文件,不允许其他用户对该文件进行读写操作。 Unlock语句 [格式]:Unlock <[#]文件号> [功能]:解除锁定的文件。 27
相关函数和语句 P140 Eof(文件号) ★ 当文件指针到达文件结束标志时返回True,否则返回False。 FreeFile[(文件号范围)] ★ 返回Open语句可以使用的下一个有效文件号 LOF(文件号) ★ 返回已用Open语句打开的文件的字节数(文件长度) P140 Kill语句 [格式]:Kill <文件名> [功能]:从磁盘上删除指定文件 FreeFile [格式]:FreeFile([<范围数>]) [功能]:返回Open语句可使用的下一个有效文件号。 [说明]: (1)范围数为0或缺省时,文件号范围是1-511; 范围数为1时,文件号范围为256-511; (2)当Open语句占用了一个文件号之后,FreeFile才能获得一个新的文件号。 28
7.3 顺序文件 以顺序方式存取的文件称为顺序文件,一般是文本文件; 特性: 每行数据长度可以不同; 增加数据时,只能添加到原有数据的最后; 7.3 顺序文件 以顺序方式存取的文件称为顺序文件,一般是文本文件; 特性: 每行数据长度可以不同; 增加数据时,只能添加到原有数据的最后; 查找数据时,必须从头开始顺序查找。 适用: 每行数据长度不确定时; 数据不经常做新增、修改和删除操作时; 处理数据是依次连续处理。 29
7.3.1 顺序文件的写操作 1、打开文件 [格式]:Open <文件名> For <Output/Append> As [#] <文件号> [功能]:用指定的文件号以顺序输出模式或添加模式打开文件。 [说明]: (1)文件名可以是字符串,包含路径; (2)若指定的文件不存在,系统将创建一个相应的文件; (3)以Output方式打开文件,文件中原有的数据被覆盖; (4)以Append方式打开文件,写入的数据将添加到原文件的尾部 (5)文件号的使用必须是唯一的,即当前已经占用的文件号不能再分配给其他文件使用;文件号的使用范围是1-511; (6)一个文件在用Output和Append方式打开后,不能再重复打开 30
错误在哪里? 以相同的文件号打开 两个不同的文件 在文件未关闭前 又重复打开 例1:Open “D:\hb\Test.txt” For Output as #1 例2:Dim sFileName As String sFileName=“D:\hb\Test.txt” Open sFileName For Append As #100 例3:Open “File1” For OutPut As #9 Open “File2” For Output As #9 例4:Open “File1” For Append As #10 Open “File1” For Append As #11 以相同的文件号打开 两个不同的文件 在文件未关闭前 又重复打开 31
2、Print #语句 [格式]:Print <#文件号> ,[<输出列表>] [功能]:将输出列表中的语句写到顺序文件中。 [说明]:该语句和普通的Print语句的输出控制格式完全相同,也分紧凑和标准两种。 例1: Open “test.dat” for output as #10 print #10, 1 , 2 , 3 print #10,”We”,”study”,”VB6.0” Close 10 执行上述程序后,文件test.dat中的数据如下 2 3 We study VB6.0 32
Open “test.dat” for output as #10 Print #10 , 1;2;3 例2: Open “test.dat” for output as #10 Print #10 , 1;2;3 Print #10 , ”We”;”study”;”VB6.0” Close 10 执行上述程序后,文件test.dat中的数据如下: 1 2 3 WestudyVB6.0 提示: 为了避免以紧凑格式输出的各字符串难以明显区分,可以人为加上逗号间隔: 例如: print #10,”We”;”,” ; ”study”;”,”; ”VB6.0” 上述语句的执行结果为:We ,study ,VB6.0 33
Private Sub Command1_Click() Dim i As Integer, a(10) As Integer Open "d:\test.txt" For Output As #1 For i = 1 To 10 a(i) = Int(Rnd * 100) + 100 Print a(i); Print #1, a(i); Next i Print Print #1, Close #1 End Sub 34
3 Write语句 [格式]:Write <#文件号>,[<输出列表>] [功能]:将输出列表中的语句写到顺序文件中。 [说明]:Write语句和Print语句的功能基本相同,它们之间的差别主要在: (1)Write语句写入的数据按照紧凑格式存放,各数据项之间自动插入逗号作为分隔符; (2)Write语句写入的字符串数据自动加上双引号作为限界符。 例: OPEN “TEST.DAT” for output as # 12 Write #12 ,1 ,-2 ,3 ,”ABC” Write #12 Write #12, 5,6,7,”DEF”, Write #12 Close #12 上述程序执行后, TEST.DAT文件中的数据为: 1,-2,3,”ABC” 5,6,7,”DEF” 35
Private Sub Command2_Click() Dim i As Integer, a(10) As Integer Open "d:\test.txt" For Output As #1 For i = 1 To 10 a(i) = Int(Rnd * 100) + 100 Print a(i); Write #1, a(i), Next i Print Write #1, Close #1 End Sub 36
7.3.2 顺序文件的读操作 1、打开文件 [格式]:Open <文件名> For Input As <#文件号> 当一个文件存在时,可以对它进行读操作。读操作分为两种,一种是一个数据一个数据地读,另一种是一行数据一行数据地读。 1、打开文件 [格式]:Open <文件名> For Input As <#文件号> [功能]:用指定的文件号以顺序输入模式打开文件。 [说明]:以Input方式打开的文件,只能进行读操作。 37
2、Input 语句 [格式]:Input <#文件号> [,变量表] [功能]:从一个打开的顺序文件中读取数据,并将它们赋值给相应的变量。 [说明]: (1)变量表可以包含简单变量和数组元素,变量之间用逗号间隔,变量类型必须与文件中的数据项的类型一致; (2)从顺序文件中读数据时,要从头开始,依次读出,若数据类型和变量类型不一致,则赋一个初值给对应的变量; (3)从顺序文件读数据时,忽略前导空格、回车符、换行符; (4)读取数值型数据时,以其后的第一个空格或逗号或回车换行符作为结束; (5)读取字符型数据时,以第一个不在双引号里的逗号或回车换行符作为结束; (6)逻辑型和日期型数据以#号作为起始符和结束符,要求大写; 38
Dim A As Integer,B AS Integer,C As Integer Dim St As String 举 例 Test.txt 中数据:34 45 78 789 Dim A As Integer,B AS Integer,C As Integer Dim St As String Input #2 ,A,B,C,St A=34,B=45,C=78,St=“789” 39
This is File Test.dat,-2365,4893,#True# 要求按下面的格式输出在窗体上: Private sub form_click() Dim x as integer,y a integer,logic as boolean Dim filenumber as integer,chr as string Filenumber=freefile Open “Test.dat” for input as #filenumber Input #filenumber.chr Input #filenumber,x,y,logic Print char Print x,y,logic End sub 程序代码如左 40
3、Line Input语句 [格式]:Line Input <#文件号>,<变量名> [功能]:将顺序文件以行为单位读出并赋值给一个变量。 [说明]: (1)变量为字符型变量,或字符型数组元素,或变体型变量; (2)将数据行中除回车符和换行符以外的所有字符都赋值给相应的变量。 41
例:将c盘根目录下的config.sys文件的内容 显示在文本框中. Private Sub Form_Click() Dim line as String,filenumber as integer,str as string filename=freefile Open “c:\config.sys” For Input As #filenumber Do While Not EOF(filenumber) Line Input #1, line str=str+line+chr(13)+chr(10) Loop Close #filenumber text1.text=str End Sub 42
4、 Input函数 [格式]:Input(<字符个数>,<#文件号>) [功能]:从指定的文件中读取指定个数的字符(含空格 及各类符号)。 例:s=Input(10,#2) 43
顺序文件的修改与删除 (1)数据只能从头依次读出; (2)写文件时要么覆盖原来的文件,要么添加在文件的最后 顺序文件的特点是: (1)数据只能从头依次读出; (2)写文件时要么覆盖原来的文件,要么添加在文件的最后 这两个特点给顺序文件的修改与删除带来了困难。 [解决方案(以修改为例)]: (1)读取数据; (2)判断是否要修改?不修改,则将数据原封不动地添加到一个临时文件中; (3)要修改,则将新数据添加到该临时文件中; (4)重复1-3步直到文件结束; (5)删除原始文件; (6)将临时文件重新命名为原始文件的名字。 44
顺序文件的应用 读取原始数据: 顺序文件的应用体现在两方面:(1)从文件中读取原始数据并提供给程序处理:(2)将程序处理结果存放到文件中。 例:数据文件Test1.Txt有10个同学的成绩,格式如下: 学号,英语成绩,数学成绩,计算机成绩,化学成绩 要求:统计每个学生的不及格门数,并将不及格门数超过1门(>1)的学生学号和不及格门数写入到文件Test2.Txt中。 [程序]: 读取原始数据: Dim a(10, 5) As Integer Open "d:test1.txt" For Input As #1 For i = 1 To 10 For j = 1 To 5 Input #1, a(i, j) Next j Next i 45
Open "d:\test2.txt" For Output As #2 For i = 1 To 10 s = 0 统计不及格门数并写入目标文件 Open "d:\test2.txt" For Output As #2 For i = 1 To 10 s = 0 For j = 2 To 5 If a(i, j) < 60 Then s = s + 1 Next j If s > 1 Then Write #2, a(i, 1), s Print a(i, 1), s End If Next I Close 46
7.4 随机文件处理 以随机方式存取的文件称为随机文件,也称记录文件,由一组长度相等的记录组成,一般用于数据库文件,具有以下几个特点: 7.4 随机文件处理 以随机方式存取的文件称为随机文件,也称记录文件,由一组长度相等的记录组成,一般用于数据库文件,具有以下几个特点: (1)记录定长; (2)若记录为单字段,则可对应与任何一个VB的标准类型;若记录为多字段,则必须由用户进行自定义; (3)随机文件的访问,可根据记录号随机访问任何一个记录。 47
7.4.2 随机文件的打开 [格式]: Open <文件名> [For Random] As [#]<文件号> Len=<记录长度> [功能]:打开一个随机文件。 [说明]: (1)Random为文件的缺省访问模式,可省略; (2)Len为指定的记录长度,不能比实际写入的数据短,否则会出错 48
7.4.1 变量声明 在处理随机文件之前,必须先声明处理文件数据的变量; 1、定义记录类型 如果需要打开或创建的随机文件的记录是多字段的,必须在模块中预先自定义一个类型。 [格式]:Type <类型名> <字段名1> As <数据类型> <字段名2> As <数据类型> <字段名n> As <数据类型> End Type [说明]: (1)数据类型为VB的标准数据类型; (2)若字段为字符型,则通常定义为定长字符串; (3)类型名和变量名的命名规则相同。 49
在具体进行随机文件的读写操作时,还必须以定义的类型声明一些变量。 例:Type Student_Score Name As String*8 Student_Id As String*7 English As Integer Math As Integer Computer As Integer End Type 2、声明变量 在具体进行随机文件的读写操作时,还必须以定义的类型声明一些变量。 例:Dim Stu_Score1 As Student_Score 50
7.4.3 随机文件的写操作 [格式]:Put #<文件号> ,[<记录号>],变量 [功能]:将变量的值写入到随机文件中。 [说明]: (1)记录号可省略,省略时将数据写入到当前文件指针处; (2)执行过一次Put操作,文件指针自动下移一个记录。 51
Type aa name As String * 8 Money As Integer End Type 窗体模块(通用)中 Private Sub Command1_Click() Dim nFileNum As Integer Dim RecLen As Integer, i As Integer RecLen = Len(Person) Open "d:\t3.txt" For Random As #1 Len = RecLen For i = 1 To 3 Person.name = InputBox("输入姓名") Person.Money = InputBox("输入工资") Put #1, , Person Next i Person.name = "China" Person.Money = 1000 Seek #1, 3 Close #1 End Sub 窗体模块(通用)中 Dim Person As aa 记录号 指定 记录号 52
7.4.4 随机文件的读操作 [格式]:Get #<文件号>,[记录号],变量 [功能]:从随机文件中读取数据,并赋值给相应的变量。 [说明]: (1)若不指定记录号,则读取当前文件指针所指的记录; (2)执行一次Get操作,文件指针自动下移一个记录。 Private Sub Command2_Click() Dim nFileNum As Integer Dim RecLen As Integer, i As Integer nFileNum = FreeFile RecLen = Len(Person) Open "d:\t3.txt" For Random As #nFileNum Len = RecLen Do While Not EOF(nFileNum) Get #nFileNum, , Person Print Person. Name, Print Person. Money Loop Close # nFileNum End Sub 53
7.5 二进制文件 以二进制方式存取的文件称为二进制文件,可以是任何类型的文件,存取方式和随机文件相同,二进制访问模式可以定位到文件中的任意一个字节的位置,读取的字节长度取决于语句中“变量”的长度。 1、打开文件 [格式]:Open <文件名> For Binary As [#]<文件号> [功能]:以二进制访问模式打开文件。 2、读写操作 语句格式和随机文件相同,系统在实现上有所不同。 54