版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第1313章章 数据文件数据文件1.掌握VB中文件的概念、种类及其结构;2.掌握顺序文件的操作:打开、读/写、关闭;3.掌握随机文件的操作:打开、读/写、关闭;4.了解二进制文件的操作。5.了解与文件操作有关的一些语句本章内容及要求:本章重点:顺序文件的操作:打开、读/写、关闭;随机文件的操作:打开、读/写、关闭;本章难点: 随机文件、二进制文件的操作第第1313章章 数据文件数据文件 文件是存储在外部介质(如磁盘)上的以文件名标识的数据的集合。通常由一组存放在磁盘上的相关字节组成。当应用程序要访问文件时,必须自己决定文件中字节的意义(比如,表示字符、数据记录、整数、字符串等等)。 存储在磁
2、盘上的文件称为磁盘文件,与计算机相连的设备称为设备文件。这些文件都不在计算机内,统称为外部文件。 13.1文件概述一、文件及其结构 文件:存储在外部介质上数据的集合。按名存取 磁盘文件是由数据记录组成。记录是计算机处理数据的基本单位,它由一组具有共同属性相互关联的数据项组成。 数据项二、文件分类二、文件分类根据访问文件的方式将文件分成3类: 顺序文件 随机文件 二进制文件。 1 1顺序文件顺序文件 顺序文件(Sequential File)是普通的文本文件。顺序文件中的记录按顺序一个接一个地排列。读写文件存取记录时,都必须按记录顺序逐个进行。一行一条记录(一项数据),记录可长可短,以“换行”字
3、符为分隔符号。 2随机文件随机文件 随机文件(Random Access File)是可以按任意次序读写的文件,其中每个记录的长度必须相同。在这种文件结构中,每个记录都有其唯一的一个记录号,所以在读取数据时,只要知道记录号,便可以直接读取记录。 随机文件的文件结构3二进制文件二进制文件 二进制文件(Binaryfile)是字节的集合、它直接把二进制码存放在文件中。 除了没有数据类型或者记录长度的含义以外,它与随机访问很相似。 二进制访问模式是以字节数来定位数据,在程序中可以按任何方式组织和访问数据,对文件中各字节数据直接进行存取。 虽然这3种文件访问的数据类型不同,但应用程序访问它们的步骤却相
4、似: 使用Open语句打开文件,并为文件指定一个文件号。对文件进行任何I/O操作之前,都必须经过这步操作。 从文件中读取部分或全部数据到变量中。 对变量中的数据进行处理。 将处理后的数据保存回文件中。 使用Close语句关闭文件。如果没有关闭文件,则会导致文件中部分或全部信息丢失。 文件的基本操作文件的基本操作打开文件读出或写入关闭文件在程序中对文件的操作,通常按3个步骤进行: 一、顺序文件的打开与关闭1. 打开文件Open “文件名” For 模式 As #文件号 Len=记录长度(1) 模式OUTPUT:写操作INPUT:读操作APPEND:追加到文件未尾OPEN C:VBSCORE.tx
5、t FOR OUTPUT AS #1(2) 文件号文件号 1511,可以用,可以用FreeFile函数获得下一个可利用的文件号。函数获得下一个可利用的文件号。(3) 记录长度记录长度小于或等于小于或等于32767的整数,它指定数据缓冲区的大小。的整数,它指定数据缓冲区的大小。例如,打开例如,打开C:VBSCORE,供写入数据,指定文件号为,供写入数据,指定文件号为#1。例如:例如: OPEN “C:TEMPA.TXT ” FOR Input AS #1 OPEN“C:TEMPB.TXT ” FOR Output AS #2 OPEN“C:TEMPC.TXT ” FOR Append AS #1
6、1、顺序文件的写操作、顺序文件的写操作 向文件写入内容使用向文件写入内容使用 Print # 语句或语句或Write#语句,在程序中是语句,在程序中是数据输出。数据输出。(1)Print语句语句语法格式:说明:说明:文件号为以写方式打开文件的文件号; 输出列表为用分号或逗号分隔的变量、常量、空格和定位函数序列。 (2)Write命令命令语法格式:Write #,Write语句采用紧凑格式。数据项之间插入“,”,并给字符数据加上双引号。例:例: Print与与Write语句输出数据结果比较。语句输出数据结果比较。Private Sub Form_Click()Dim Str As String,
7、 Anum As Integer Open D:Myfile.dat For Append As 1Str = ABCDEFGAnum = 12345Print #1, Str, AnumWrite #1, Str, AnumClose #1End Sub例:例:编程把一个文本框中的内容,以文件形式存入磁盘。编程把一个文本框中的内容,以文件形式存入磁盘。假定文本框的名称为假定文本框的名称为Mytxt,文件名为,文件名为Myfile.dat。方法方法1:把整个文本框的内容一次性地写入文件。把整个文本框的内容一次性地写入文件。Open Myfile.dat For Output As #1Prin
8、t #1, Mytxt.TextClose #1方法方法2:把整个文本框的内容一个字符一个字符地写入文件。把整个文本框的内容一个字符一个字符地写入文件。Open Myfile.dat For Output As #1For i=1 To len(Mytxt.Text) Print #1,Mid(Mytxt.Text,i,1);Next iClose #12. 顺序文件读操作 从现存文件中读入数据,应以顺序Input方式打开该文件。然后使用 Input# 语句、Line Input# 语句和Input( )函数读入到程序变量中。 使用格式如下: INPUT #文件号文件号,变量列表变量列表把读出
9、的每个数据项分别存放到所对应的变量。LINE INPUT #文件号文件号,字符串变量字符串变量读一行到变量中,主要用来读取文本文件。INPUT$(读取字符数读取字符数, #文件号文件号)读取指定的数量的字符,作为函数的返回值。三、关闭文件三、关闭文件Close 语句使用格式如下: 其中:文件号列表为可选项,如:#1, #2, #3,如果省略,则将关闭Open语句打开的所有活动文件。例如: Close #1,#2,#3 Close 四与读文件操作有关的几个函数四与读文件操作有关的几个函数(1)Lof 函数函数 LOF函数将返回某文件的字节数。例如,函数将返回某文件的字节数。例如,LOF(1)返回
10、返回#1文件的长度,如果文件的长度,如果返回返回0值,则表示该文件是一个空文件。值,则表示该文件是一个空文件。(2)Loc 函数函数 Loc函数将返回在一个打开文件中读写的记录号;对于二进制文件,它将返函数将返回在一个打开文件中读写的记录号;对于二进制文件,它将返回最近读写的一个字节的位置。回最近读写的一个字节的位置。(3)Eof 函数函数 Eof 函数将返回一个表示文件指针是否到达文件末尾的标志。如果到了文件函数将返回一个表示文件指针是否到达文件末尾的标志。如果到了文件末尾,末尾,Eof 函数返回函数返回TRUE(-1),否则返回,否则返回FALSE(0)。 语法结构:语法结构: Do Wh
11、ile Not Eof(文件号)(文件号) 语句语句 Loop例:例: 编程将一文本文件的内容读到文本框编程将一文本文件的内容读到文本框 假定文本框名称为假定文本框名称为txtTest,文件名为,文件名为MYFILE.TXT。可以通过下面三种。可以通过下面三种方法来实现。方法来实现。 方法方法1:一行一行读一行一行读txtTest.Text Open MYFILE.TXT For Input As #1Do While Not EOF(1)Line Input #1, InputDatatxtTest.Text txtTest.Text + InputData+vbCrLfLoopClose
12、#1 方法2:一次性读txtTest.Text Open MYFILE.TXT For Input As #1txtTest.Text = Input( LOF(1),1)Close #1方法3:一个个字符读Dim InputData as String*1txtTest.Text Open MYFILE.TXT For Input As #1Do While Not EOF(1)Input #1, InputDatatxtTest.Text txtTest.Text + InputDataLoopClose #1例:顺序文件的应用举例. 本程序演示顺序文件的读写操作,程序运行示意如图所示。该
13、程序可以打开一个顺序文件,将其内容存入文本框中进行修改,并可以保存修改。改成可以将文本框的内容在磁盘上建立一个顺序文件。顺序文件应用举例14.2 顺序文件设置控件事件代码如下:v Private Sub Command1_Click() 本过程完成文件的读取功能v Dim File1v Dim nextline As Stringv CommonDialog1.Filter= Text Files(.txt)|.txt 指定默认文件类型v CommonDialog1.ShowOpen 调用以CommonDialog1控件打开的对话框,以输入要打开的文件名v File1=CommonDialog
14、1.filename 将打开对话框提供的文件名赋予变量File1 顺序文件应用举例v Open File1 For Input As #1 按读方式打开下面循环可以用语句“Text1.text=Input(LOF(1),1)”替代 v Do Until EOF(1) 将打开文本文件的内容赋予文本框v Line Input #1,nextlinev Text1.Text=Text1.Text+nextline+Chr(13)+Chr(10)v Loopv Close 1 关闭打开的文件v End Subv Private Sub Command2_Click() 本过程完成将文本框的内容写入文件
15、中v Dim contents,File1v CommonDialog1.showSave 调用CommandDialog1控件的保存对话框,以提供建立文件的文件名v File1=CommonDialog1.filenamev Open File1 For Output As #1 以写方式打文件v Contents=Text1.Textv Text1.Text= 清除文本框中的内容v Print #1,Contents 往文件中写入内容v Close 1 v End SubPrivate Sub Command3_Click()v Unload Me 退出程序v End Sub14.3 随机
16、文件 在文件中以顺序文件方式进行存取数据很方便也很常用,但是当需要大量查找或修改文件中的数据时会很困难,而这时采用随机文件方式存取数据就显得比较方便。 随机文件的每一个数据项都有相同的长度,它的数据项通常称做记录。随机文件是以记录为单位的,每条记录都被赋予了记录号以便查找。应用程序可以根据记录号直接读取随机文件中的任意记录,而无须由前至后逐个读取记录。 对随机文件的存取是以记录为单位进行的,每个记录包括一个或多个字段。具有一个字段的记录对应于任一标准类型,比如整数或定长字符串。具有多个字段的记录对应于用户自定义类型。 1、 声明记录类型变量 在打开一个文件进行随机访问之前,应定义一个类型,该类
17、型对应于该文件包含或将包含的记录。 语法格式为: Private|Public Type 自定义类型名自定义类型名 元素名元素名 As type 元素名元素名 As type End Type 例如,声明一个学生自定义类型。 Type Student Number As String 2 学号,宽度为2字节 Name As String 8 姓名,宽度为8字节 Score As Integer 成绩,宽度为2字节 End Type 13.3 随机文件 在定义与记录对应的类型以后,应接着声明程序需要的任何其他变量,用来处理作为随机访问而打开的文件。如: Public student1,stude
18、nt2 As student 定义记录变量 Public stnume As Integer 定义存放当前记录号的变量 Public LastRecord As Long 存放最后一条记录的编号 13.3 随机文件例如:v Dim Lastrecord As Long 存放最后一个记录的编号v Dim student1 As studentv Dim RecLength as Long v RecLength=Len(student1) 计算每条记录的长度v FileNum=FreeFile() 取出下一个可用文件编号v Open School .dat For Random As FileN
19、um Len=RecLength 用Open语句打开新文件v LastRecord=LOF(FileNum)/RecLength 存放文件中记录的个数13.3 随机文件2 随机文件的操作 一、打开格式: Open 文件名 For Random As #文件号 Len=记录长度二、读操作1.格式: Get #文件号,记录号,变量名2.功能: 将一个已打开的磁盘文件的一条记录的内容读入一个变量之中。 忽略记录号,则读出当前记录后的那一条记录。三、写操作1.格式:Put #文件号,文件号,记录号记录号,变量名,变量名2.功能:将一个变量的数据写入磁盘文件中,将一个记录变量的内容写到指定的记录位置处。
20、忽略记录号,则表示在当前记录后的位置插入一条记录。例题:创建一个随机文件,然后读出其中内容,显示在文本框中:例题:创建一个随机文件,然后读出其中内容,显示在文本框中:在窗体中创建一个文本框在窗体中创建一个文本框text1,两个命令按钮,两个命令按钮command1和和command2,点击,点击command1(写入文件)时创建文件,点击(写入文件)时创建文件,点击command2(读出文件)时把文件中(读出文件)时把文件中的数据读出来,显示在文本框中。下面是程序代码:的数据读出来,显示在文本框中。下面是程序代码:自定义数据类型(记录类型,在窗体的通用代码段中声明)自定义数据类型(记录类型,在
21、窗体的通用代码段中声明)Private Type Record ID As Integer Name As String * 20 End Type创建文件的代码,创建文件的代码,Command1的单击事件的单击事件Private Sub Command1_Click() Dim MyRecord As Record Open TESTFILE For Random As #1 Len = Len(MyRecord) For recordnumber = 1 To 5 MyRecord.ID = recordnumber MyRecord.Name = My Name & record
22、number Put #1, recordnumber, MyRecord Next recordnumberClose #1End Sub读出文件的代码(读出文件的代码(Command2的单击事件)的单击事件)Private Sub Command2_Click()Dim MyRecord As RecordOpen TESTFILE For Random As #1 Len = Len(MyRecord)While Not EOF(1) Get #1, , MyRecord Text1.Text=Text1.Text & Chr(10) & Chr(13) & Ch
23、r(10) & Chr(13) & MyRecord.ID & & MyRecord.NameWendClose #1End Sub 二进制文件是一个字节流,文件系统并不解释各字节的意义,解释工作由具体的应用程序完成。 以二进制方式访问文件有下述特点: 可以直接访问文件中的所有数据。 由应用程序根据需要解释数据的意义。 访问文件的语句不更改原始数据的所有内容。 二进制文件每一次读写是以字节为单位对数据进行访问操作的,它允许用户读写或修改文件中的任何字节信息。当把二进制数据写入文件中时,使用Byte数据类型的数组,而不是String变量。String被认为包含的是
24、字符,而二进制型数据可能无法正确地存储在String变量中。 当要保持文件的尺寸尽量小时,应使用二进制文件。13.4 二进制文件一、二进制文件的打开Open 文件名 For Binary As #文件号二、二进制文件的写操作Put #文件号,位置,变量名写入长度等于变量长度的数据。三、二进制文件的读操作GET #文件号,位置,变量名 从指定位置开始读出长度等于变量长度的数据存入变量中,数据读出后移动变量长度位置,如果忽略位置,则表示从文件指针所指的位置开始读出数据,数据读出后移动变量长度位置。13.4 二进制文件 例题 文件复制 Dim char As ByteDim FileNum1,FileNum2 as IntegerFileNum1 = FreeFileOpen C:STUDENT.DAT Fo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第三节水圈和水循环教案
- 《楼宇经济发展情况报告》
- 屋顶餐厅屋顶防水修缮协议
- 苏教版五年级上册美术教案
- 冷冻仓储服务合同
- 河道城市办公设施工程合同
- 建筑绿化模板施工承包合同
- 航空航天甲方现场管理办法
- 玩具零售联营合同
- 教育工程合同教学质量
- 23J916-1 住宅排气道(一)
- 2024年新人教版四年级数学上册《第5单元第5课时 梯形的认识》教学课件
- 采购主管岗位招聘笔试题与参考答案(某大型国企)2024年
- 短视频运营及带货逻辑课件
- 2024年中国陶茶具市场调查研究报告
- 《传播学概论(第四版)》全套教学课件
- 2022年江苏省普通高中学业水平测试生物试卷
- 人教版(2024)七年级英语上册教学课件Unit 3 Lesson 6 Reading Plus
- 第4章 跨境电商选品与定价
- 《介绍教室》(教案)-2024-2025学年一年级上册数学北师大版
- 中医科研思路
评论
0/150
提交评论