第7章数据文件 本章主要内容 7.1 文件的基本概念 7.2 顺序文件的建立 7.3顺序文件的读取 7.4顺序文件中数据的编辑 7.5随机文件的建立 7.6随机文件的读取
第7章数据文件 本章主要内容 7.1 文件的基本概念 7.2 顺序文件的建立 7.3 顺序文件的读取 7.4 顺序文件中数据的编辑 7.5 随机文件的建立 7.6 随机文件的读取
7.1文件的基本概念 第7章数据文件 1.文件的定义 指存储在外存上具有符号名的数据的集合 2.文件的分类 (1) 按文件的内容分类 可分为程序文件和数据文件两大类。 (2) 按存储信息的形式分类 可分为ASCI文件和二进制文件。 (3) 按数据文件的访问模式可分为: 顺序读写、随机读写和二进制读写模式。 4) 按存储介质可以分为: 磁盘文件、磁带文件、光盘文件、打印文件等
第 7 章 数 据 文 件 1.文件的定义 指存储在外存上具有符号名的数据的集合 2.文件的分类 (1) 按文件的内容分类 可分为程序文件和数据文件两大类。 (2) 按存储信息的形式分类 可分为ASCII文件和二进制文件。 (3) 按数据文件的访问模式可分为: 顺序读写、随机读写和二进制读写模式。 (4) 按存储介质可以分为: 磁盘文件、磁带文件、光盘文件、打印文件等。 7.1 文件的基本概念
7.1文件的基本概念 第7章数据文件 3.数据文件的组成 数据文件中的数据是以记录为单位组织起来的。 一个文件由若干条记录组成,一个记录可以包含若干 个数据项。 对数据文件的操作(文件读和写)是以记录为单位进 行的。 学号 姓名 高数 英语 物理 计算机 0201011 张一帆 90 87 86 94 0201012 王志文 85 92 85 75 0201013 李丽 100 89 56 77 … … 。 ◆
第 7 章 数 据 文 件 3.数据文件的组成 ◼ 数据文件中的数据是以记录为单位组织起来的。 ◼ 一个文件由若干条记录组成,一个记录可以包含若干 个数据项。 ◼ 对数据文件的操作(文件读和写)是以记录为单位进 行的。 学号 姓名 高数 英语 物理 计算机 0201011 张一帆 90 87 86 94 0201012 王志文 85 92 85 75 0201013 李丽 100 89 56 77 …… …… …… …… …… …… 7.1 文件的基本概念
7.1文件的基本概念 第7章数 4.缓冲区与文件号 对磁盘上的数据文件进行读写操作时,必须先在内存中开 辟一个专门的数据存储区域,用来建立文件操作必要的输入/输 文件 出通道,这个专门的数据存储区域称为缓冲区 当同时操作多个文件时,VB系统自动为每个文件开辟一个缓 冲区,为便于标识,需要对文件缓冲区进行编号,该编号称为 “缓冲区号”或“文件号”。文件号的取值范围在1-512之间。 缓冲区1 磁盘 缓冲区n 内存数据区
第 7 章 数 据 文 件 4.缓冲区与文件号 对磁盘上的数据文件进行读写操作时,必须先在内存中开 辟一个专门的数据存储区域,用来建立文件操作必要的输入/输 出通道,这个专门的数据存储区域称为缓冲区 当同时操作多个文件时,VB系统自动为每个文件开辟一个缓 冲区,为便于标识,需要对文件缓冲区进行编号,该编号称为 “缓冲区号”或“文件号”。文件号的取值范围在1-512之间。 缓冲区1 缓冲区n … 内存数据区 磁盘 7.1 文件的基本概念
7.2顺序文件的建立 第7章数据文件 1.建立文件 0pen文件名 For Output As#文件号 其中:文件名是一个字符串,如果不在当前文件夹下, 还需要带上路径。例如: Open "c:\abc.txt"For Output As #1 2.向文件写入数据 Print #n, 数据项1,数据项2,…, 数据项n Write #n, 数据项1,数据项2,·…,数据项n 其中, 数据项之间可以用“,”也可以用“;”分隔。 3.关闭文件 Close[文件号] 如果不指定文件号,则关闭所有打开的数据文件
第 7 章 数 据 文 件 1.建立文件 Open 文件名 For Output As #文件号 其中:文件名是一个字符串,如果不在当前文件夹下, 还需要带上路径。例如: Open "c:\abc.txt" For Output As #1 2.向文件写入数据 Print #n,数据项1,数据项2,……,数据项n Write #n, 数据项1,数据项2,……,数据项n 其中,数据项之间可以用“ , ”也可以用“ ; ”分隔。 3. 关闭文件 Close [文件号] 如果不指定文件号,则关闭所有打开的数据文件。 7.2 顺序文件的建立
7.2顺序文件的建立 第7章数据文件 示例1在C盘根目录下创建一个顺序文件。 Open "c:\testfile.txt"For Output As #1 Print #1,"This is a test" Print #1, '产生一个空记录 Print #1,"char1","char2" '按照标准格式写入数据 Print #1,"char1";"char1" '按照紧凑格式写入数据 Write #1,"One","Two",123 用Write形式写入数据 Close #1 testfile-记事本 日▣☒ 文件)编辑您)格式@)查看)帮助D This is a test 注意: char1 char2 (1)创建的文件路径问题; char1char1 0ne","Two",123 (2)代码中涉及到三种写入数据 (3)用这种方式创建的文件可以
第 7 章 数 据 文 件 7.2 顺序文件的建立 示例1 在C盘根目录下创建一个顺序文件。 Open "c:\testfile.txt" For Output As #1 Print #1, "This is a test" Print #1, ' 产生一个空记录 Print #1, "char1", "char2" ' 按照标准格式写入数据 Print #1, "char1"; "char1" ' 按照紧凑格式写入数据 Write #1, "One", "Two", 123 ' 用Write形式写入数据 Close #1 注意: (1)创建的文件路径问题; (2)代码中涉及到三种写入数据的方法,观察有什么区别? (3)用这种方式创建的文件可以用记事本打开查看内容
7.2顺序文件的建立 第7章数据文件 示例2从键盘录入3个学生的学号、姓名、3门课成绩并 保存到C盘目录下 student-记事本 日回☒ Dim i%,xh,x 文件) 编辑)格式Q) 查看) 帮助) Open "c:\stu “09107001","张老三“",5,62,63 For i=1 To "09107002",“季老四",52,62,85 一】 xh Inp “69107003",“主老五",75,85,62 xm Inp cj1=InputBox("第1课成绩) cj2=InputBox("第2门课成绩") cj3=InputBox("第3门课成绩") Write #1,xh,xm,cj1,cj2,cj3 Next i Close MsgBox"文件创建结束!
第 7 章 数 据 文 件 7.2 顺序文件的建立 示例2 从键盘录入3个学生的学号、姓名、3门课成绩并 保存到C盘目录下的student.txt文件中。 Dim i%, xh$, xm$, cj1%, cj2%, cj3% Open "c:\student.txt" For Output As #1 For i = 1 To 3 xh = InputBox("学号") xm = InputBox("姓名") cj1 = InputBox("第1门课成绩") cj2 = InputBox("第2门课成绩") cj3 = InputBox("第3门课成绩") Write #1, xh, xm, cj1, cj2, cj3 Next i Close MsgBox "文件创建结束!
7.3顺序文件的读取 第7章数据文件 1. 打开已经存在的顺序文件 Open文件名For Input As#文件号 2 循环读取文件中的数据,直到遇到文件结束。 顺序文件是否结束通过Eof(文件号) 判断,当函数值为真,! 则文件读取结束。 读取数据谙句 Loop 3.数据读取 (1)Input#文件号,变量1,变量2,…,变量N (2)Line Input#文件号,字符串变量 4. 关闭文件
第 7 章 数 据 文 件 7.3 顺序文件的读取 1. 打开已经存在的顺序文件 Open 文件名 For Input As #文件号 2. 循环读取文件中的数据,直到遇到文件结束。 因此循环结构通常表示为: Do Until Eof(文件号) 读取数据语句 Loop 3. 数据读取 (1)Input #文件号,变量1,变量2,…,变量N (2)Line Input #文件号, 字符串变量 4. 关闭文件 顺序文件是否结束通过Eof(文件号) 判断,当函数值为真,则文件读取结束
7.3顺序文件的读取 第7章数据文件 示例3 从C盘目录下的student.txt文件中 读出数据并求出三门课的平均成绩后显示到窗 体上。 Dim i%,xhs,xms,cj1%,cj2%,cj3%,av! Open "c:\student.txt"For Input As #1 Do Until EOF(1) Input #1,xh,xm,cjl,cj2,cj3 av =(cj1 cj2 cj3)/3 Print xh,xm,cj1,cj2,cj3,av Loop Close
第 7 章 数 据 文 件 示例3 从C盘目录下的student.txt文件中 读出数据并求出三门课的平均成绩后显示到窗 体上。 Dim i%, xh$, xm$, cj1%, cj2%, cj3%, av! Open "c:\student.txt" For Input As #1 Do Until EOF(1) Input #1, xh, xm, cj1, cj2, cj3 av = (cj1 + cj2 + cj3) / 3 Print xh, xm, cj1, cj2, cj3, av Loop Close 7.3 顺序文件的读取
7.4随机文件的建立 第7章数据文件 随机文件的特点 (1)随机文件中各记录长度相等,只要知道记录号, 即可很方便地确定该记录存贮位置,因此可以按照记录 号随机进行存取; (2)随机文件中的记录对应一个自定义数据类型, 因此操作随机文件要一般要先定义自定义数据类型, (3)VB中文件长度可以通过Lof(文件号)获得,而 个自定义类型变量的长度可以通过函数Len(记录变量名) 获得,所以随机文件记录数可以通过表达式Lo(文件 号)/Len(记录变量名)获得
第 7 章 数 据 文 件 7.4 随机文件的建立 随机文件的特点 (1)随机文件中各记录长度相等,只要知道记录号, 即可很方便地确定该记录存贮位置,因此可以按照记录 号随机进行存取; (2)随机文件中的记录对应一个自定义数据类型, 因此操作随机文件要一般要先定义自定义数据类型; (3)VB中文件长度可以通过Lof(文件号)获得,而一 个自定义类型变量的长度可以通过函数Len(记录变量名) 获得,所以随机文件记录数可以通过表达式Lof(文件 号)/Len(记录变量名)获得