1、第十章第十章 数据文件数据文件101 文件基本概念文件基本概念102 文件操作文件操作103 文件控件文件控件104本章小结本章小结101 文件基本概念文件基本概念 文件是指在外部存储器上数据的集合。在计算机系统中,文件文件是指在外部存储器上数据的集合。在计算机系统中,文件被解释为一组赋名的相关联字符流的集合,或者是相关联记录被解释为一组赋名的相关联字符流的集合,或者是相关联记录的集合。的集合。Visual Basic使用使用“文件文件”这个概念来对外部存储器这个概念来对外部存储器上的数据进行访问。为了有效的存取外部存储器中的数据,就上的数据进行访问。为了有效的存取外部存储器中的数据,就必须将
2、外部数据有效的组织起来。必须将外部数据有效的组织起来。101 文件基本概念文件基本概念 1.根据文件内容,文件可分为根据文件内容,文件可分为 (1)程序文件程序文件(Program File):(2)数据文件数据文件(Data File):2.根据存取方式和结构分类,数据文件又可分为根据存取方式和结构分类,数据文件又可分为 (1)顺序存取文件顺序存取文件(Sequential Access File):(2)随机存取文件随机存取文件(Random Access File):3.根据文件信息的编码方式,文件又可以分为根据文件信息的编码方式,文件又可以分为 (1)ASCII文件文件:(2)二进制文
3、件二进制文件(Binary File):102 文件操作文件操作1.打开文件打开文件一个文件必须先打开才能读写。如果一个文件已经存在,则一个文件必须先打开才能读写。如果一个文件已经存在,则打开该文件;如果不存在,则先建立再打开该文件。打开该文件;如果不存在,则先建立再打开该文件。2.进行读写操作进行读写操作在打开的文件上执行所要求的输入或输出操作。在文件的输入在打开的文件上执行所要求的输入或输出操作。在文件的输入输出中,把内存中的数据传输到相关联的外部设备输出中,把内存中的数据传输到相关联的外部设备(如磁盘如磁盘)并并作为文件存放的操作称为写数据,或称为输出;把外部设备上作为文件存放的操作称为
4、写数据,或称为输出;把外部设备上文件中的数据传输到内存中的操作称为读数据,或称为输入。文件中的数据传输到内存中的操作称为读数据,或称为输入。3.关闭文件关闭文件 打开的文件使用打开的文件使用(读写读写)完后,必须关闭,否则会造成数据丢完后,必须关闭,否则会造成数据丢失。关闭文件会将文件缓冲区中的数据全部写入磁盘,释放掉失。关闭文件会将文件缓冲区中的数据全部写入磁盘,释放掉该文件缓冲区占用的内存。该文件缓冲区占用的内存。102 文件操作文件操作 1.顺序文件的打开顺序文件的打开(建立建立)格式:格式:Open For访问模式访问模式 Acess访问方式访问方式LockAs#文文件号件号 Len=
5、记录长度记录长度说明:说明:文件名是指要打开的文件的名称,可包含驱动器名及路径名。文件名是指要打开的文件的名称,可包含驱动器名及路径名。访问模式:是指文件的打开方式,对顺序文件而言,有访问模式:是指文件的打开方式,对顺序文件而言,有3种种模式。模式。Output(输出输出):相当于写文件。:相当于写文件。Input(输入输入):相当于读文件。:相当于读文件。Append(添加添加):相当于将数据添加在文件尾部。:相当于将数据添加在文件尾部。102 文件操作文件操作访问方式:为可选参数。它是说明打开文件所允许的操作,访问方式:为可选参数。它是说明打开文件所允许的操作,有以下有以下3种方式。种方式
6、。Read:只读。:只读。Write:只写。:只写。ReadWrite:读写皆可,只适用于顺序文件的:读写皆可,只适用于顺序文件的Append模式。模式。Lock:为可选参数。它是指其他进程对打开文件所允许的:为可选参数。它是指其他进程对打开文件所允许的操作,有以下操作,有以下3种方式。种方式。Shared:可对此文件读写。:可对此文件读写。LockRead:不允许读此文件。:不允许读此文件。LockWrite:不允许写此文件。:不允许写此文件。102 文件操作文件操作文件号:为必选参数,是给打开的文件分配一个文件号,范文件号:为必选参数,是给打开的文件分配一个文件号,范围在围在1511之间。
7、一旦给文件指定了文件号,该文件号就之间。一旦给文件指定了文件号,该文件号就代表打开的文件,在该文件关闭以前进行的读写操作均使代表打开的文件,在该文件关闭以前进行的读写操作均使用该文件号;直到关闭此文件,此文件号才能被其他文件用该文件号;直到关闭此文件,此文件号才能被其他文件使用。使用。记录长度:为可选参数。它是一个小于或等于记录长度:为可选参数。它是一个小于或等于32767字节的字节的数。对于顺序文件,该值是缓冲字符数,指定进行数据交数。对于顺序文件,该值是缓冲字符数,指定进行数据交换时数据缓冲区的大小。换时数据缓冲区的大小。Open语句具有打开文件和建立文件两种功能。如果为语句具有打开文件和
8、建立文件两种功能。如果为Input方式打开的文件不存在,则产生方式打开的文件不存在,则产生“文件未找到文件未找到”错误;如错误;如果为果为Output、Append等方式打开的文件不存在,则建立等方式打开的文件不存在,则建立并打开文件。并打开文件。102 文件操作文件操作2.关闭文件的命令是关闭文件的命令是Close。格式:格式:Close#文件号文件号,#文件号文件号功能:关闭功能:关闭Open语句所打开的指定文件。语句所打开的指定文件。102 文件操作文件操作3.顺序文件的写操作顺序文件的写操作(1)Print#语句。语句。语句格式:语句格式:Print#,功能:按规定格式把输出表中的数据
9、写入文件号指定的顺序文功能:按规定格式把输出表中的数据写入文件号指定的顺序文件中。件中。(2)Write#语句语句格式:格式:Write#文件号文件号,输出列表,输出列表注意:多个表达式之间可用空白、分号或逗号隔开,空白或分注意:多个表达式之间可用空白、分号或逗号隔开,空白或分号等效。号等效。102 文件操作文件操作用如下语句建立文件用如下语句建立文件city.dat,并把文本框,并把文本框Text1.Text的内容的内容写入该文件中。写入该文件中。Private Sub Command1_Click()Dim FileNum As IntegerFileNum=FreeFile()Open“
10、city.dat”For Output As FileNum Print#FileNum,Text1.Text Close FileNumEnd Sub102 文件操作文件操作建立一个简单的顺序文件建立一个简单的顺序文件testfile.txt。Private Sub Form_Click()Dim filename As String filename=”c:testfile.txt”Open filename For Output As#1 Print#1,”This”;”is”;”my”;”first”;”file.”Print#1,”This”,”is”,”my”,”second”,”
11、file.”Close#1MsgBox ”内容已经成功写入文件内容已经成功写入文件”&filenameEnd Sub102 文件操作文件操作使用使用Write#语句建立上面的语句建立上面的testfile.txt文件文件Private Sub Form_Click()Dim filename As String filename=”c:testfile.txt”Open filename For Output As#1 Write#1,”This”;”is”;”my”;”first”;”file.”,1 Write#1,”This”,”is”,”my”,”second”,”file.”,2 C
12、lose#1 MsgBox “内容已经成功写入文件内容已经成功写入文件”&filenameEnd Sub102 文件操作文件操作4.顺序文件的读操作顺序文件的读操作(1)Input#语句语句Input#文件号,变量列表文件号,变量列表功能:从已打开的顺序文件指针所指的位置起,读出数据项,功能:从已打开的顺序文件指针所指的位置起,读出数据项,依次赋值给变量表中的各变量。依次赋值给变量表中的各变量。(2)Line Input#语句语句格式:格式:Line Input#文件号,字符串变量文件号,字符串变量功能:从顺序文件中读取一个完整的行,并把它赋给一个字符功能:从顺序文件中读取一个完整的行,并把它
13、赋给一个字符串变量。串变量。(3)Input函数函数格式:格式:Input(n,#)功能:返回从指定的文件中读出功能:返回从指定的文件中读出n个字符的字符串。个字符的字符串。102 文件操作文件操作测试测试Input语句语句Private Sub Form_Click()Dim filename As String filename=”c:testfile.txt”Open filename For Output As#1 Write#1,”One”,”Two”,”Line1”Write#1,”Three”,”Four”,”Line2”Close#1 Dim s1,s2 As String O
14、pen filename For Input As#1 Input#1,s1,s2MsgBox “S1=”&s1&“S2=”&s2 结果是结果是“S1=OneS2=Two“Close#1Open filename For Input As#1Line Input#1,s1MsgBox “S1=”&s1 结果是结果是“S1=”One”,”Two”,”Line1”“Close#1End Sub102 文件操作文件操作102 文件操作文件操作使用使用Input函数函数Private Sub Form_Click()Dim filename As String filename=”c:testfile
15、.txt”Open filename For Output As#1 Print#1,”ABC大写字母排排坐大写字母排排坐”Close#1 Open filename For Input As#1 MsgBox Input(7,1)结果是结果是“ABC大写字母大写字母”而不是而不是“ABC大写大写”Close#1End Sub102 文件操作文件操作 这个类型文件的特点就是每个字段都具有固定的长度,这个类型文件的特点就是每个字段都具有固定的长度,针对这个特征,就可以使用随机存取的文件来保存这些信针对这个特征,就可以使用随机存取的文件来保存这些信息。随机存取的文件是由记录构成的,每个随机文件的记
16、息。随机存取的文件是由记录构成的,每个随机文件的记录都是由定长的字段构成,所以每个记录的长度也都相同,录都是由定长的字段构成,所以每个记录的长度也都相同,利用这一点,就可以很方便地找到某个特定记录的某个字利用这一点,就可以很方便地找到某个特定记录的某个字段。段。“记录记录”是是Visual Basic中的用户自定义的数据类型。中的用户自定义的数据类型。在程序中使用记录类型数据时,应先定义一个记录类型,在程序中使用记录类型数据时,应先定义一个记录类型,再声明该类型的变量,这样就为这个变量申请了内存空间再声明该类型的变量,这样就为这个变量申请了内存空间用于存放随机文件中的记录。用于存放随机文件中的
17、记录。102 文件操作文件操作 1.记录类型记录类型 (1)记录类型的定义格式:记录类型的定义格式:Type As As End Type 其中,记录类型名是用户自定义类型的名称,数据项名是用其中,记录类型名是用户自定义类型的名称,数据项名是用户自定义类型中元素的名称,记录类型名和数据项名的命名户自定义类型中元素的名称,记录类型名和数据项名的命名规则与变量的命名规则相同。规则与变量的命名规则相同。(2)记录类型变量的访问形式为:记录类型变量的访问形式为:(i).其中,若使用其中,若使用(i),表示访问该记录类型数组的第,表示访问该记录类型数组的第i个元素。个元素。102 文件操作文件操作 2.
18、随机文件的打开与关闭随机文件的打开与关闭 在对一个随机文件操作之前,也必须用在对一个随机文件操作之前,也必须用Open语句打开文语句打开文件,随机文件的打开方式必须是件,随机文件的打开方式必须是Random方式,同时要指明方式,同时要指明记录的长度。与顺序文件不同的是,随机文件打开后,可同记录的长度。与顺序文件不同的是,随机文件打开后,可同时进行写入与读出操作。时进行写入与读出操作。Open语句的格式:语句的格式:Open 文件名文件名 For Random As#文件号文件号 Len=记录长度记录长度因为因为Random是是Open语句缺省的访问类型,所以语句缺省的访问类型,所以For Ra
19、ndom关键字是可选项。关键字是可选项。随机文件的关闭同顺序文件一样,使用随机文件的关闭同顺序文件一样,使用Close语句。语句。102 文件操作文件操作 3.随机文件的写入操作随机文件的写入操作向随机文件写数据用向随机文件写数据用Put语句。语句。格式:格式:Put#文件号,文件号,记录号记录号,记录变量,记录变量说明:说明:“#”、“记录号记录号”是可选的。该语句是将一个记录变量是可选的。该语句是将一个记录变量的内容写入所打开的磁盘文件中指定的记录位置处。记录号的内容写入所打开的磁盘文件中指定的记录位置处。记录号是是1231-1的整数,表示写入的是指定记录号的记录;若不指的整数,表示写入的
20、是指定记录号的记录;若不指定记录号,则表示将变量内容写在下一记录位置。定记录号,则表示将变量内容写在下一记录位置。4.随机文件的读出操作随机文件的读出操作使用使用Get语句从随机文件读取数据。语句从随机文件读取数据。格式:格式:Get#文件号,文件号,记录号记录号,记录变量,记录变量说明:记录变量的数据类型必须同文件中记录的数据类型一致。说明:记录变量的数据类型必须同文件中记录的数据类型一致。该语句是从磁盘文件将一条由记录号指定的记录内容读入记该语句是从磁盘文件将一条由记录号指定的记录内容读入记录变量中。录变量中。102 文件操作文件操作随机文件的读写操作随机文件的读写操作Private Ty
21、pe StructStudent Name As String*16 Age As Integer Mark As DoubleEnd TypePrivate Sub Form_Paint()Dim OneStudent As StructStudent Dim theStudent As StructStudent Dim filename As String filename=”c:testfile.txt”OneStudent.Name=”张力张力”OneStudent.Age=19 OneStudent.Mark=79.5102 文件操作文件操作 Open filename For R
22、andom As#1 Len=Len(OneStudent)Put#1,1,OneStudent OneStudent.Name=”王五王五”OneStudent.Age=18 OneStudent.Mark=80.23 Put#1,2,OneStudent Get#1,1,theStudent Close#1 Cls Print theStudent.Name;theStudent.Age;theStudent.MarkEnd Sub102 文件操作文件操作建立一个学生记录的随机文件,通过点击按钮能够实现对记录建立一个学生记录的随机文件,通过点击按钮能够实现对记录的随时添加、删除和修改操作。
23、的随时添加、删除和修改操作。102 文件操作文件操作 二进制文件可以被看作是字节的顺序排列,以字节为最小定位单位,二进制文件可以被看作是字节的顺序排列,以字节为最小定位单位,可以从文件中任何一个字节处开始读写。可以从文件中任何一个字节处开始读写。1.二进制文件的打开二进制文件的打开(建立建立)打开二进制文件使用的打开二进制文件使用的Open语句形式为:语句形式为:Open For Binary As 文件刚被打开时,文件指针指向第一个字节,以后将随着文件处理文件刚被打开时,文件指针指向第一个字节,以后将随着文件处理命令的执行而移动。命令的执行而移动。2.写读二进制文件写读二进制文件 二进制文件
24、打开后,可同时进行读写操作,二进制文件读写也使二进制文件打开后,可同时进行读写操作,二进制文件读写也使用用Get和和Put语句,只不过不再指定记录号,而是指定要处理的位置语句,只不过不再指定记录号,而是指定要处理的位置(字节数)。(字节数)。格式:格式:Put|Get#,其中变量名参数可以是任何类型的变量,包括可变长度的字符串以及其中变量名参数可以是任何类型的变量,包括可变长度的字符串以及用户自定义的类型。用户自定义的类型。102 文件操作文件操作二进制文件的读写操作二进制文件的读写操作Private Sub Form_Paint()Dim filename As String filenam
25、e=”c:testfile.txt”Dim m1 As String Dim n1 As Long n1=12345 Open filename For Binary As#1 Put#1,1,n1 Put#1,”ABC”Get#1,1,n1 m1=Input(3,#1)Close#1 Cls Print n1,m1 End Sub102 文件操作文件操作 1.FreeFile函数。函数。格式:格式:FreeFile(n)功能:返回一个可用的文件号。功能:返回一个可用的文件号。2.EOF(End of File)函数。函数。格式:格式:EOF()功能:返回一个逻辑值,表示功能:返回一个逻辑值,
26、表示“文件号文件号”所指定文件的指所指定文件的指针是否到达文件末尾。针是否到达文件末尾。3.LOF(Length Of File)函数。函数。格式:格式:LOF()功能:返回一个长整型数,表示打开的文件的大小,该大功能:返回一个长整型数,表示打开的文件的大小,该大小以字节为单位。小以字节为单位。102 文件操作文件操作4.Loc(Location)函数。函数。格式:格式:Loc()功能:返回一个长整型数,表示文件当前的读写位置。功能:返回一个长整型数,表示文件当前的读写位置。5.Seek语句和语句和Seek函数。函数。Seek语句格式:语句格式:Seek#,功能:设置功能:设置“文件号文件号”
27、所指定文件中下一个读或写的位置。所指定文件中下一个读或写的位置。Seek函数格式:函数格式:Seek()功能:返回已打开文件的下一次要读写的位置。功能:返回已打开文件的下一次要读写的位置。6.FileCopy语句的作用是复制一个文件。语句的作用是复制一个文件。格式:格式:FileCopy 源文件名源文件名 目标文件名目标文件名7.Kill语句的作用是删除文件。语句的作用是删除文件。格式:格式:Kill 文件名文件名102 文件操作文件操作8.Name语句的作用是重命名一个文件或目录。语句的作用是重命名一个文件或目录。格式:格式:Name 旧文件名旧文件名 新文件名新文件名9.ChDrive语句
28、的作用是改变当前驱动器。语句的作用是改变当前驱动器。格式:格式:ChDrive 驱动器驱动器10.MkDir语句的功能是创建一个新的目录。语句的功能是创建一个新的目录。格式:格式:MkDir 文件夹名文件夹名11.ChDir语句的功能是改变当前目录。语句的功能是改变当前目录。格式:格式:ChDir 文件夹名文件夹名12.RmDir语句的功能是删除一个存在的目录。语句的功能是删除一个存在的目录。格式:格式:RmDir 文件夹名文件夹名103 文件控件文件控件驱动器列表框(驱动器列表框(DriveListBox)目录列表框目录列表框(DirListBox)文件列表框文件列表框(FileListBo
29、x)103 文件控件文件控件驱动器列表框是下拉式列表框,默认情驱动器列表框是下拉式列表框,默认情况下显示用户系统的当前驱动器。运况下显示用户系统的当前驱动器。运行时,用户可输入任何有效的驱动器行时,用户可输入任何有效的驱动器标识符,或者单击驱动器列表框右侧标识符,或者单击驱动器列表框右侧的箭头,从下拉出的驱动器列表中,的箭头,从下拉出的驱动器列表中,用户可选择有效驱动器的标识符,被用户可选择有效驱动器的标识符,被选中的驱动器将出现在列表框的顶端。选中的驱动器将出现在列表框的顶端。如图如图所示。所示。图图10-6 驱动器列表框驱动器列表框 在运行状态下可以使用赋值语句给在运行状态下可以使用赋值语
30、句给Drive属性赋值:属性赋值:Drive驱动器列表框的基本事件是驱动器列表框的基本事件是Change事件,在程序运行时,事件,在程序运行时,当选择一个新的驱动器或通过代码改变当选择一个新的驱动器或通过代码改变Drive属性的设置时,都属性的设置时,都会触发驱动器列表框的会触发驱动器列表框的Change事件发生。事件发生。103 文件控件文件控件在窗体中添加目录列表框控件,以便当程序运行时显示当前驱在窗体中添加目录列表框控件,以便当程序运行时显示当前驱动器上的目录列表。这个目录列表包括当前驱动器根目录动器上的目录列表。这个目录列表包括当前驱动器根目录及其子目录结构,如图所示。及其子目录结构,
31、如图所示。103 文件控件文件控件Path属性是目录列表框控件最常用的属性,用于返回或设置属性是目录列表框控件最常用的属性,用于返回或设置当前路径。该属性在设计时不可用。当前路径。该属性在设计时不可用。格式:格式:对象对象Path=路径路径说明:说明:对象是目录列表框的对象名。对象是目录列表框的对象名。路径是一个关于路径名的字符串表达式。默认值是当前路径。路径是一个关于路径名的字符串表达式。默认值是当前路径。103 文件控件文件控件文件列表框用来显示当前目录下的文件,也可以显示由文件列表框用来显示当前目录下的文件,也可以显示由Path属性指定的目录中的文件。如图所示。属性指定的目录中的文件。如
32、图所示。103 文件控件文件控件常用的属性常用的属性:1.Path属性。属性。2.Pattern属性。属性。3.FileName属性。属性。4.显示指定类型的文件显示指定类型的文件103 文件控件文件控件例【例【10-3】:用文件系统控件实现文件管理。窗体上有一个:用文件系统控件实现文件管理。窗体上有一个驱动器列表框、一个目录列表框、一个文件列表框、一个驱动器列表框、一个目录列表框、一个文件列表框、一个框架和三个复选框,运行界面如图所示。框架和三个复选框,运行界面如图所示。104本章小结本章小结1文件的概念文件的概念:所谓所谓“文件文件”是存储在外部介质(如磁盘)上是存储在外部介质(如磁盘)上
33、数据的集合。从不同的角度,文件可分为不同的类型。数据的集合。从不同的角度,文件可分为不同的类型。2文件操作文件操作:顺序文件是指程序执行期间,数据只能从文件的顺序文件是指程序执行期间,数据只能从文件的首部按顺序写入或顺序读出的文件。而随机文件则可直接快首部按顺序写入或顺序读出的文件。而随机文件则可直接快速访问文件中的任意一条记录,但要求写入的各记录、记录速访问文件中的任意一条记录,但要求写入的各记录、记录项长度都必须相等。在执行读写操作时,只要指定记录号就项长度都必须相等。在执行读写操作时,只要指定记录号就可直接对其进行读写。可直接对其进行读写。在在Visual Basic中,文件的操作通过有
34、关语句和函数来实中,文件的操作通过有关语句和函数来实现。本章讲述了现。本章讲述了Open、Close、Print#、write#、close等等重要的语句和重要的语句和FreeFile、EOF、LOF、Seek等相关函数。等相关函数。3.文件控件文件控件:使用使用Visual Basic提供的文件系统控件可以设计出提供的文件系统控件可以设计出满足不同需要、具有不同显示风格的文件系统对话框。通常满足不同需要、具有不同显示风格的文件系统对话框。通常情况下,驱动器列表框、目录列表框和文件列表框控件会联情况下,驱动器列表框、目录列表框和文件列表框控件会联合使用,以供用户选择驱动器、目录和文件。合使用,以供用户选择驱动器、目录和文件。谢 谢!