1、第第1111章章 数据文件数据文件1.掌握VB中文件的概念、种类及其结构;2.掌握顺序文件的操作:打开、读/写、关闭;3.掌握随机文件的操作:打开、读/写、关闭;4.了解二进制文件的操作。5.了解与文件操作有关的一些语句本章内容及要求:第1页,共41页。本章重点:顺序文件的操作:打开、读/写、关闭;随机文件的操作:打开、读/写、关闭;本章难点:随机文件、二进制文件的操作第第1111章章 数据文件数据文件第2页,共41页。VBVB提供了提供了3 3种可直接浏览系统目录结构和文件的控件:种可直接浏览系统目录结构和文件的控件:驱动器列表框、目录列表框、文件列表框。驱动器列表框、目录列表框、文件列表框
2、。驱动器列表框文件列表框目录列表框第3页,共41页。驱动器列表框(DriveListBox)控件,通常只显示当前驱动器名称,单击向下箭头,就会下拉出计算机拥有的所有磁盘驱动器,供用户选择。1 1重要属性重要属性 Drive属性是驱动器列表框控件最重要和常用的属性,该属性在设计时不可用。使用格式:object.Drive=例如:Drive1.drive=“D:”第4页,共41页。2 2重要事件重要事件ChangeChange事件事件 在程序运行时,当选择一个新的驱动器或通过代码改变Drive属性的设置时都会触发驱动器列表框的change事件发生。目录列表框(DirListBox)控件用来当前驱动
3、器目录结构及当前目录下的所有子文件夹(子目录)。供用户选择其中一个目录为当前目录。第5页,共41页。1常用属性 Path属性是目录列表框控件的最常用的属性,用于返回或设置当前路径。该属性在设计时是不可用的。其中:Object:对象表达式,其值是目录列表框的对象名。:用来表示路径名的字符串表达式。例如,Dir1.Path=C:Mydir。缺省值是当前路径。说明:说明:Path属性也可以直接设置限定的网络路径 如,网络计算机名共享目录名path 第6页,共41页。与驱动器列表框一样,在程序运行时,每当改变当前目录,即目录列表框的Path属性发生变化时,都要触发其Change事件发生。第7页,共41
4、页。文件列表框(FileListBox)控件用来显示 Path 属性指定的目录中的文件定位并列举出来。该控件用来显示所选择文件类型的文件列表。1常用属性常用属性 用于返回和设置文件列表框当前目录,设计时不可用。说明:当Path值的改变时,会引发一个PathChange事件。第8页,共41页。用于返回或设置被选定文件的文件名,设计时不可用。说明:Filename属性不包括路径名。例如:要从文件列表框(File1)中获得全路径的文件名Fname$,用下面的程序代码:If Right(file1.path,1)=Then Fname$=file1.path&file1.filenameElse Fn
5、ame$=file1.path&file1.filenameEnd If第9页,共41页。用于返回或设置文件列表框所显示的文件类型。可在设计状态设置或在程序运行时设置。缺省时表示所有文件。设置形式为:设置形式为:其中value是一个用来指定文件类型的字符串表达式,并可使用包含通配符(“*”和“?”)例如:File1.Pattern=*.txt File1.Pattern=*.txt;*.Doc“File1.Pattern=?.txt“注意:要指定显示多个文件类型,使用“;”为分隔符 重新设置Pattern属性引发“PatternChange”事件。第10页,共41页。例如:单击输出文件名。例如
6、:单击输出文件名。Sub filFile_Click()MsgBox filFile.FileNameEnd Sub例如:双击执行可执行程序例如:双击执行可执行程序 Sub File1_DblClick()Dim Fname As String If Right(file1.path,1)=Then Fname=file1.path&file1.filename Else Fname=file1.path&file1.filename End If RetVal=Shell(Fname,1)执行程序执行程序End Sub 第11页,共41页。Sub Drive1_Change()Dir1.Pa
7、th=Drive1.DriveEnd SubSub Dir1_Change()filFile.Path=Dir1.PathEnd Sub 说明:说明:要使驱动器、目录和文件列表框同步显示,那么就需要编写代码才能要使驱动器、目录和文件列表框同步显示,那么就需要编写代码才能使它们之间彼此同步。使它们之间彼此同步。第12页,共41页。文件是存储在外部介质(如磁盘)上的以文件名标识的数据的集合。通常由一组存放在磁盘上的相关字节组成。当应用程序要访问文件时,必须自己决定文件中字节的意义(比如,表示字符、数据记录、整数、字符串等等)。存储在磁盘上的文件称为磁盘文件,与计算机相连的设备称为设备文件。这些文件
8、都不在计算机内,统称为外部文件。11.2 11.2 文件概述文件概述第13页,共41页。一、文件及其结构 文件:存储在外部介质上数据的集合。按名存取 磁盘文件是由数据记录组成。记录是计算机处理数据的基本单位,它由一组具有共同属性相互关联的数据项组成。数据项11.2.1 11.2.1 文件的概念文件的概念第14页,共41页。二、文件分类二、文件分类根据访问文件的方式将文件分成3类:顺序文件 随机文件 二进制文件。1 1顺序文件顺序文件 顺序文件(Sequential File)是普通的文本文件。顺序文件中的记录按顺序一个接一个地排列。读写文件存取记录时,都必须按记录顺序逐个进行。一行一条记录(一
9、项数据),记录可长可短,以“换行”字符为分隔符号。第15页,共41页。2随机文件随机文件 随机文件(Random Access File)是可以按任意次序读写的文件,其中每个记录的长度必须相同。在这种文件结构中,每个记录都有其唯一的一个记录号,所以在读取数据时,只要知道记录号,便可以直接读取记录。随机文件的文件结构二、文件分类二、文件分类第16页,共41页。3二进制文件二进制文件 二进制文件(Binaryfile)是字节的集合、它直接把二进制码存放在文件中。除了没有数据类型或者记录长度的含义以外,它与随机访问很相似。二进制访问模式是以字节数来定位数据,在程序中可以按任何方式组织和访问数据,对文
10、件中各字节数据直接进行存取。二、文件分类二、文件分类第17页,共41页。虽然这3种文件访问的数据类型不同,但应用程序访问它们的步骤却相似:使用Open语句打开文件,并为文件指定一个文件号。对文件进行任何I/O操作之前,都必须经过这步操作。从文件中读取部分或全部数据到变量中。对变量中的数据进行处理。将处理后的数据保存回文件中。使用Close语句关闭文件。如果没有关闭文件,则会导致文件中部分或全部信息丢失。文件的基本操作文件的基本操作第18页,共41页。与读文件操作有关的几个函数与读文件操作有关的几个函数(1)Lof 函数函数 LOF函数将返回某文件的字节数。例如,函数将返回某文件的字节数。例如,
11、LOF(1)返回返回#1文件的长度,如文件的长度,如果返回果返回0值,则表示该文件是一个空文件。值,则表示该文件是一个空文件。(2)Loc 函数函数 Loc函数将返回在一个打开文件中读写的记录号;对于二进制文件,它函数将返回在一个打开文件中读写的记录号;对于二进制文件,它将返回最近读写的一个字节的位置。将返回最近读写的一个字节的位置。(3)Eof 函数函数 11.3 文件操作语句和函数文件操作语句和函数第19页,共41页。与文件系统相关的语句与文件系统相关的语句1.ChDir 语句 格式:ChDir path 功能:改变当前目录。例如:ChDir D:TMP 2.ChDrive 语句 格式:C
12、hDrive drive 功能:改变当前驱动器 说明:如果drive为“”,则当前驱动器将不会改变;如果drive中有多个 字 符,则ChDrive只会使用首字母。11.3 文件操作语句和函数文件操作语句和函数第20页,共41页。3.MkDir 语句 格式:MkDir path 功能:创建一个新的目录。4.RmDir 语句 格式:RmDir path 功能:删除一个存在的目录 说明:只能删除空目录。5.FileCopy语句 格式:FileCopy source ,destination 功能:复制一个文件。说明:FileCopy语句不能复制一个已打开的文件。11.3 文件操作语句和函数文件操作
13、语句和函数第21页,共41页。6.Name 语句 格式:Name oldpathname As newpathname 功能:重新命名一个文件或目录。说明:(1)Name具有移动文件的功能。(2)不能使用统配符“*”和“?”,不能对一个已打开的文件上使用Name语句。7.Kill语句 格式:Kill pathname 功能:删除文件。说明:pathname中可以使用统配符“*”和 “?”。例如:Kill *.TXT11.3 文件操作语句和函数文件操作语句和函数第22页,共41页。打开文件读出或写入关闭文件11.4 11.4 顺序文件的基本操作顺序文件的基本操作在程序中对文件的操作,通常按3个步
14、骤进行:一、顺序文件的打开与关闭1.打开文件Open “文件名”For 模式 As#文件号 Len=记录长度(1)模式OUTPUT:写操作INPUT:读操作APPEND:追加到文件未尾 OPEN C:VBSCORE.txt FOR OUTPUT AS#1第23页,共41页。(2)文件号文件号 1511,可以用,可以用FreeFile函数获得下一个可利用的文件号。函数获得下一个可利用的文件号。(3)记录长度记录长度小于或等于小于或等于32767的整数,它指定数据缓冲区的大小。的整数,它指定数据缓冲区的大小。例如,打开例如,打开C:VBSCORE,供写入数据,指定文件号为,供写入数据,指定文件号为
15、#1。例如:例如:OPEN “C:TEMPA.TXT”FOR Input AS#1 OPEN “C:TEMPB.TXT”FOR Output AS#2 OPEN “C:TEMPC.TXT”FOR Append AS#111.4 11.4 顺序文件的基本操作顺序文件的基本操作第24页,共41页。v 打开文件的真正含意打开文件的真正含意:(1)并不是把文件内容显示出来,而是读文件或显示文件内容的必经步骤;并不是把文件内容显示出来,而是读文件或显示文件内容的必经步骤;(2)打开文件并不一定只是为了读文件内容而打开,其实写文件或新建文件之打开文件并不一定只是为了读文件内容而打开,其实写文件或新建文件之
16、前都要把对应的文件打开。前都要把对应的文件打开。v 如何打开由用户任意指定的文件:如何打开由用户任意指定的文件:(1)用打开用打开/另存为对话框;另存为对话框;(2)用文件列表框用文件列表框/目录列表框目录列表框/驱动器列表框驱动器列表框 要注意要注意OPEN语句与它们分工上的不同语句与它们分工上的不同11.4 11.4 顺序文件的基本操作顺序文件的基本操作第25页,共41页。1.顺序文件读操作 从现存文件中读入数据,应以顺序Input方式打开该文件。然后使用 Input#语句、Line Input#语句和Input()函数读入到程序变量中。使用格式如下:格式一:格式一:Input#语句语句
17、INPUT#文件号文件号 ,变量列表变量列表把读出的每个数据项分别存放到所对应的变量,从文件中读出数据时,凡是遇到文件中的逗号、空格或回车符便认为是一个数据项的结束。11.4 11.4 顺序文件的基本操作顺序文件的基本操作第26页,共41页。Eof 函数函数 Eof 函数将返回一个表示文件指针是否到达文件末尾的标志。函数将返回一个表示文件指针是否到达文件末尾的标志。如果到了文件末尾,如果到了文件末尾,Eof 函数返回函数返回TRUE(-1),否则返回,否则返回FALSE(0)。从文件中读数据的常见循环方式:从文件中读数据的常见循环方式:Do While Not Eof(文件号文件号)读文件及其
18、它语句读文件及其它语句 Loop11.4 11.4 顺序文件的基本操作顺序文件的基本操作第27页,共41页。例例2:把文件文件:把文件文件datain.txt的内容全部读出并显示在窗体中:的内容全部读出并显示在窗体中:FName=App.Path&datain.txtOpen FName For Input As#1Do While Not Eof(1)Input#1,a Print aLoopClose#111.4 11.4 顺序文件的基本操作顺序文件的基本操作第28页,共41页。格式二:格式二:Line Input#语句语句 LINE INPUT#文件号文件号 ,字符串变量字符串变量功能:
19、从顺序文件中读取一整行字符到后面指定的字符串变量中。功能:从顺序文件中读取一整行字符到后面指定的字符串变量中。例:把程序文件夹下面的文本文件例:把程序文件夹下面的文本文件myfile.txt的内容显示在一个多行文本框中:的内容显示在一个多行文本框中:FName=App.Path&myfile.txtOpen FName For Input As#1Do While Not EOF(1)Line Input#1 ,s Text1.Text=Text1.Text +s +vbCrLfLoopClose#111.4 11.4 顺序文件的基本操作顺序文件的基本操作第29页,共41页。格式三:格式三:I
20、nput函数:函数:INPUT$(N ,#文件号文件号)从指定文件中读取从指定文件中读取N个字符的字符串,作为函数的返回值个字符的字符串,作为函数的返回值例:把程序文件夹下面的文本文件例:把程序文件夹下面的文本文件myfile.txt的内容一次性读出并显示在多行文本框的内容一次性读出并显示在多行文本框中:中:FName=App.Path&myfile.txt Open FName For Input As#1Text1.Text=Input(LOF(1),1)Close#111.4 11.4 顺序文件的基本操作顺序文件的基本操作第30页,共41页。例:把程序文件夹下面的文本文件例:把程序文件夹
21、下面的文本文件myfile.txt的内容逐个字符读出并显示在多行文的内容逐个字符读出并显示在多行文本框中。本框中。Dim c As String*1FName=App.Path&myfile.txt Open FName For Input As#1Do While Not EOF(1)c=Input(1,#1)Text1.Text=Text1.Text&cLoopClose#111.4 11.4 顺序文件的基本操作顺序文件的基本操作第31页,共41页。2、顺序文件的写操作、顺序文件的写操作 向文件写入内容使用向文件写入内容使用 Print#语句或语句或Write#语句,在程序中是数据输出。语
22、句,在程序中是数据输出。(1)Print语句语句语法格式:说明:说明:文件号为以写方式打开文件的文件号;输出列表为用分号或逗号分隔的变量、常量、空格和定位函数序列。(2)Write命令命令语法格式:Write#,Write语句采用紧凑格式。数据项之间插入“,”,并给字符数据加上双引号。11.4 11.4 顺序文件的基本操作顺序文件的基本操作第32页,共41页。三、关闭文件三、关闭文件Close 语句使用格式如下:其中:文件号列表为可选项,如:#1,#2,#3,如果省略,则将关闭Open语句打开的所有活动文件。例如:例如:Close#1 ,#2 删除打开的删除打开的1号、号、2号文件号文件 Cl
23、ose 删除打开的全部文件删除打开的全部文件11.4 11.4 顺序文件的基本操作顺序文件的基本操作第33页,共41页。11.5 11.5 随机文件随机文件 在文件中以顺序文件方式进行存取数据很方便也很常用,但是当需要大量查找或修改文件中的数据时会很困难,而这时采用随机文件方式存取数据就显得比较方便。随机文件的每一个数据项都有相同的长度,它的数据项通常称做记录。随机文件是以记录为单位的,每条记录都被赋予了记录号以便查找。应用程序可以根据记录号直接读取随机文件中的任意记录,而无须由前至后逐个读取记录。对随机文件的存取是以记录为单位进行的,每个记录包括一个或多个字段。具有一个字段的记录对应于任一标
24、准类型,比如整数或定长字符串。具有多个字段的记录对应于用户自定义类型。第34页,共41页。1、声明记录类型变量 在打开一个文件进行随机访问之前,应定义一个类型,该类型对应于该文件包含或将包含的记录。语法格式为:Type 自定义类型名自定义类型名 元素名元素名 As type 元素名元素名 As type End Type 第35页,共41页。例如,声明一个学生自定义类型。例如,声明一个学生自定义类型。Type Student Number As String 2 学号,宽度为学号,宽度为2字节字节 Name As String 8 姓名,宽度为姓名,宽度为8字节字节 Score As Inte
25、ger 成绩,宽度为成绩,宽度为2字节字节 End Type 在定义与记录对应的类型以后,应接着声明程序需要的任何其他变量,用来处理作为随机访问而打开的文件。如:Dim s1 As student ,s2 As student 定义记录变量s1和s2 11.5 随机文件随机文件第36页,共41页。2 2 随机文件的操作随机文件的操作 一、打开格式:Open “文件名文件名”For Random As#文件号文件号 Len=记录长度记录长度二、读操作1.格式:Get#文件号文件号 ,记录号记录号 ,变量名,变量名2.功能:将一个已打开的磁盘文件的一条记录的内容读入一个变量之中。忽略记录号,则读出
26、当前记录后的那一条记录。第37页,共41页。三、写操作1.格式:Put#文件号文件号 ,记录号记录号 ,变量名,变量名2.功能:将一个变量的数据写入磁盘文件中,将一个记录变量的内容写到指定的记录位置处。忽略记录号,则表示在当前记录后的位置插入一条记录。11.5 随机文件随机文件第38页,共41页。二进制文件是一个字节流,文件系统并不解释各字节的意义,解释工作由具体的应用程序完成。以二进制方式访问文件有下述特点:可以直接访问文件中的所有数据。由应用程序根据需要解释数据的意义。访问文件的语句不更改原始数据的所有内容。二进制文件每一次读写是以字节为单位对数据进行访问操作的,它允许用户读写或修改文件中
27、的任何字节信息。当把二进制数据写入文件中时,使用Byte数据类型的数组,而不是String变量。String被认为包含的是字符,而二进制型数据可能无法正确地存储在String变量中。当要保持文件的尺寸尽量小时,应使用二进制文件。11.6 11.6 二进制文件二进制文件第39页,共41页。一、二进制文件的打开Open 文件名 For Binary As#文件号二、二进制文件的写操作Put#文件号 ,位置 ,变量名写入长度等于变量长度的数据。三、二进制文件的读操作GET#文件号 ,位置 ,变量名 从指定位置开始读出长度等于变量长度的数据存入变量中,数据读出后移动变量长度位置,如果忽略位置,则表示从文件指针所指的位置开始读出数据,数据读出后移动变量长度位置。11.6 11.6 二进制文件二进制文件第40页,共41页。例题 文件复制 Dim c As ByteOpen F1.DAT For Binary As#1 打开源文件打开源文件Open F2.Dat For Binary As#2 打开目标文件打开目标文件Do While Not EOF(1)Get#1 ,c 从源文件读出一个字节从源文件读出一个字节Put#2 ,c 将一个字节写入目标文件将一个字节写入目标文件LoopClose11.6 11.6 二进制文件二进制文件第41页,共41页。
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。