210 likes | 433 Views
第 7 章 文件基本操作. 7.1 文件的基本概念. 7.2 顺序文件. 7.3 随机文件. 7.4 二进制文件. 重点: 1. 文件的基本概念 2. 三种文件的读写方法. 7.1 文件的基本概念. 文件是存放在外部介质 ( 如磁盘等 ) 上的大量相关数据的集合 , 每个文件都有一个文件名。 文件名的一般格式: [ 路径: ] 文件名 [. 扩展名 ]. 7.1.1 数据文件的类型. 根据文件的内容及内部信息组织方式的不同分为三类: 顺序文件、随机文件、二进制文件。
E N D
第7章 文件基本操作 7.1 文件的基本概念 7.2 顺序文件 7.3 随机文件 7.4 二进制文件 重点:1.文件的基本概念 2.三种文件的读写方法
7.1文件的基本概念 文件是存放在外部介质(如磁盘等)上的大量相关数据的集合,每个文件都有一个文件名。文件名的一般格式: [路径:]文件名[.扩展名] 7.1.1 数据文件的类型 根据文件的内容及内部信息组织方式的不同分为三类:顺序文件、随机文件、二进制文件。 顺序文件:是普通的文本文件,写入到顺序文件中的任何类型的数据,都被转换成其ASCII码字符形式存储。即文件中的任何一个字符都被假设为代表一个文本字符或文本格式序列.(如换行符被存储为ANSI字符)。
7.1.1 数据文件的类型 随机文件:又称为记录文件,是由固定长度的记录顺序排列而成,每个记录可由多个各种类型的字段项组成。数据作为二进制信息存储。 二进制文件:用来存放任意类型的数据。除了没有数据类型或者记录长度的含义外,它与随机文件的访问很相似。然而,为了能正确地对它检索必须精确知道数据是如何写到文件中的。
打开文件 访问文件 关闭文件 7.1.2 文件处理的基本流程 在VB中对文件的操作,首先要打开文件,然后才能对文件进行读/写操作,文件操作完毕后,要及时关闭。 1、打开文件: 文件打开后,系统为该文件在内存中开辟一个缓冲区,这个缓冲区通过文件号和文件发生联系。因此在后续的文件访问中,不指定文件本身(不再使用文件名路径),而是用这个文件号来代表缓冲区。 打开文件的命令语句是Open,其基本语法为: Open [路径:] 文件名 [.扩展名] For 打开方式 AS #文件号 说明:打开方式是指处理文件的方式。根据处理文件类型的不同,打开方式也各不相同。
2、文件号与FreeFile函数: 文件号是系统为处理文件所开辟的访问缓冲区的代码,对某个文件号的操作就是对文件的操作。VB规定,对其它应用程序不能访问的文件,使用1~255范围内的文件号。对可由其它应用程序访问的文件,使用256~511范围内的文件号。一个文件号只能指定给一个文件使用,直到这个文件被关闭,这个文件号才能给其它的文件使用。 使用FreeFile函数可获得尚未被占用的文件号中的头一个,该函数的使用方法如下: FileNo=FreeFile Open "C:\DATA.TXT" For Input AS #FileNo Close #FileNo。
3、关闭文件 Close [#文件号][,#文件号]... 功能:关闭指定文件号的文件.如果Close 不指定任何文件号,将关闭所有目前打开的文件.被关闭文件的文件号可以被用于打开其它的文件. 4、App.Path属性 在VB集成环境中,App是一个全局对象,在VB程序的任何段落中均可以自由使用,他记载了关于运行程序的详细信息.其中App对象的Path属性.在设计调试阶段表示工程文件所在的路径,在执行.EXE文件时,表示.EXE文件所在的路径.
【例7-1-1】将数据文件A.TXT和工程文件都存放到D:\盘根下,将当前路径改为"C:\"下,如果在打开文件时不使用App.Path,此时系统提示"文件未找到".若加上App.Path,将会打开文件.【例7-1-1】将数据文件A.TXT和工程文件都存放到D:\盘根下,将当前路径改为"C:\"下,如果在打开文件时不使用App.Path,此时系统提示"文件未找到".若加上App.Path,将会打开文件. Private Sub Command1_Click() ChDrive "C:“ ChDir "C:\“ Open App.Path & "\a.txt" For Input As #1 Input #1,a,b Print a,b Close #1 End Sub
7.2 顺序文件 顺序文件的打开 语法格式: Open"[路径]<文件名>.扩展名" For Input|Output|Append As #<文件号> 语句中各参数的说明: (1)[路径]<文件名>.扩展名:就是要访问的顺序文件的名称以及文件所在的路径。在输入时要用引号括起来. (2)Input、Output和Append选项:称文件的访问模式,是指对文件要进行什么操作。 ●Output选项:选项用来在磁盘上创建一个新的顺序文件,文件打开后文件的指针位于文件开头,准备向文件写入数据.盘上的同名文件将被覆盖.
●Input选项:从打开的文件中进行读取数据操作,即将数据从文件中读入内存。注:文件必须存在,否则将出现错误。●Input选项:从打开的文件中进行读取数据操作,即将数据从文件中读入内存。注:文件必须存在,否则将出现错误。 ●Append选项:打开或创建一个新的顺序文件,文件打开后文件指针位于文件的末尾准备向文件的尾部追加数据.若磁盘上没有该文件,则创建一个新的文件。 (3)<文件号>:为被打开或新建的文件指定一个文件号,该文件号用来标识打开文件的文件句柄,一般用FreeFile函数获得,以后再访问该文件时,打开的文件将通过该<文件号>进行读写操作.顺序文件的打开
7.2.1 顺序文件的读操作 读取顺序文件中数据的步骤: (1)用Open语句以Input方式打开文件,用FileNo=FreeFile自动获取文件号,即: Open App.Path & "\文件名.扩展名" For Input As #FileNo (2)用Input#、Line Input#语句或Input()函数将文件的一行数据复制到内存变量中; (3)用EOF()函数检测文件的数据是否读完,未读完,转到下一行; (4)读完后,用Close语句关闭文件。
1、Input# 语句 格式:Input # 文件号,变量名1[,变量名2...] 功能:该语句用来从打开的文件中读取一行中的各数据项(文件中的数据项用","逗号分隔)并依次存放在对应的变量中。 说明:<变量名>为内存变量,各变量以逗号分隔。变量类型应与文件中的所读取到的数据类型和顺序一致。 2、Line Input#语句 格式:Line Input#<文件号>,<变量名> 功能:该语句用来从打开的顺序文件中读取一行数据存放在指定的变量中。
3、Input()函数 格式:Input(Length,#<文件号>) 功能:Input函数可以读取指定长度Length的数据(字符个数). 说明:Length用来指定从文件中读取字符的个数。它与Line Input #语句的不同之处在于:Line Input #语句一次读取一整行的数据,但不包括行最后的回车/换行符;而Input()函数返回指定长度的所有字符,包括回车和换行符等. 4、EOF()函数 格式:EOF(文件号) 功能:该函数测试当前读写位置,即文件指针是否位于“文件号”所代表文件的末尾。是文件尾则返回True(-1),否则返回False(0)。
【例7-1】使用Input#语句将文本文件中的数据读入到变量中,并在立即窗口显示出来。文本文件内容如左图所示。其中各数据项用逗号或空格隔开。(按数据项读取,读入的数据不包括字符串的定界符和数据项之间的分隔符。)运行结果如右图所示。【例7-1】使用Input#语句将文本文件中的数据读入到变量中,并在立即窗口显示出来。文本文件内容如左图所示。其中各数据项用逗号或空格隔开。(按数据项读取,读入的数据不包括字符串的定界符和数据项之间的分隔符。)运行结果如右图所示。 Private Sub Command1_Click() Dim mystr As String, mynum As Single fileno = FreeFile Open App.Path & "\7-1.txt" For Input As fileno Do While Not EOF(fileno) Input #fileno, mystr, mynum Debug.Print mystr, mynum Loop Close #fileno End
7.2.2 顺序文件的写操作 语法:Print #文件号,[输出列表] Write #文件号,[输出列表] 功能:将数据写入文件。 说明:[输出列表]为表达式或是要输出的表达式列表。如果省略输出列表参数,而且文件号之后只含有一个列表分隔符,则将一空白行输出到文件中。多个表达式之间用逗号、分号或空格隔开,逗号、分号的含义与用Print语句输出时的含义相同,空格与分号等效。
【例7-5】文件输出。 代码如下: Private Sub Command1_Click() fileno = FreeFile Open App.Path & "\outfile.txt" For Output As #fileno Print #fileno, "王芳"; "女"; "电子021"; True;#6/8/2003# Write #fileno, "王芳"; "女"; "电子021"; True;#6/8/2003# Close #fileno End Sub
7.3 随机文件 1.随机文件打开语句: Open [路径:]<文件名>[.扩展名] For Random As #<文件号> [Len=<记录长度] 说明: (1)<文件名>为所要打开的随机文件名称. (2)For Random表示打开随机文件。 (3)<文件号>标识打开文件的文件句柄(文件号),必须是1--511之间的整数. (4)Len=<记录长度>指定每条记录的长度,记录长度可用函数Len()确定。 2.随机文件的关闭 随机文件的关闭语句与顺序文件相同:Close<文件号>
7.3.1 定义记录类型 在打开一个随机文件之前,应定义一个记录类型,定义的方法如下: 格式: Type 类型名 元素名 AS 类型 元素名 AS 类型 元素名 AS 类型 ... END TYPE 功能:创建一个记录类型的变量,用来存放记录中的若干个数据项。
7.3.2 随机文件的读写操作 1.读记录语句 Get#<文件号>,[记录号],<变量> 功能:将随机文件中指定的记录,读取到变量中。 说明: ⑴<文件号>:是打开文件时指出的文件句柄。 ⑵<记录号>:是要读取的记录号。当<记录号>省略时,系统将读取当前记录。当<记录号>省略时,分隔符的逗号也必须写出来。如:Get #4,,FileBuffer ⑶<变量>:是接受记录内容的记录型变量。
2.写记录语句 Put#<文件号>,[记录号],<变量> 功能:将记录变量的内容写入到所打开文件中的指定记录处。 说明: ⑴<文件号>:是所要打开文件的文件句柄(文件号)。 ⑵<记录号>:是要写入或替换的记录位置。 ⑶<变量>:是要写入的记录型数据变量。
7.4 二进制文件 7.4.1 二进制文件的和打开关闭 1.打开和创建二进制文件的语句: Open [路径:]<文件名>[.扩展名] For Binary As <文件号> 功能:打开或建立二进制文件。 2.关闭二进制文件 与其它数据文件的关闭相同 Close#<文件号> <文件号>省略时,将关闭所有打开的文件.
7.4.2.二进制文件的读、写操作 可从打开的二进制文件的指定位置读取一定长度的数据,也可将一定长度的二进制数据写入二进制文件的指定位置. Get#<文件号>,<位置>,<变量名> Put#<文件号>,<位置>,<变量名> <位置>为读写位置距文件开头的字节数,Get语句或Put语句一次读出或写入的字节数为Len(变量名)个字节。