




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第八章文件处理办法8.1.1 程序在运行时所所处理的数据,根据其生存周期与存储介质通常分为二类:一类是只存储在内存中的工作数据;另一类数据是记录了程序的运行结果,并且需要在以后的程序运行或其它软件中重复使用。对于后一类数据,需要通过文件对其进行保存。8.1.1 文件概念在计算机系统中,文件被定义成具有符号名(文件名)在逻辑上具有完整意义的有序数据集合,它被保存在磁盘、光盘等外部存储器中,由操作系统进行统一管理,用户通过文件名对其进行访问。文件逻辑结构 在操作系统中,文件的逻辑结构分为字节流式与记录式。VB的随机文件属于记录式结构,而顺序文件与二进制文件在本质上都属于字节流式结构。 在记录式文件
2、内数据被划分为多个记录。记录是一种具有特定意义的数据单元,它被进一步划分为若干个字段。一个字段由若干个字节组成,对应于某一VB标准数据类型,表示记录的一个数据项。如以下学生学籍记录由学号、姓名、性别、出生日期、家庭地址等字段组成。字节流式文件是由字节或字符序列组成的文件,其内部不再划分结构,因此字节或字符是其基本的数据访问单位。 学号姓名性别出生日期家庭地址8.1.3 VB文件类型文件类型 VB文件的类型有两种划分方法:一种是按存取方式与逻辑结构分为顺序文件、随机文件和二进制文件。另一种是按编码方式划分为ASCII码文件和二进制编码文件。 顺序文件属于ASCII码文件,而随机文件和二进制文件同
3、属于二进制编码文件。8.1.3 VB文件类型文件类型顺序文件顺序文件 顺序文件在VB中专门用于处理以ASCII形式存储的文本文件,即顺序文件是字符流式文件。 顺序文件的最大缺点在于在对文件修改时,必须将所有文件字符读入内存,修改后再将修改结果写入文件。 顺序文件既可用于存储文字信息,也可存储表示数值的数字,但在存储数字时会比二进制文件占用更多的空间,因为每个数字都要按字符串存储。2. 随机文件随机文件 一种可进行随机读写的记录式文件。所谓“随机”,是指在这种文件中,对任意位置的记录的访问,都只须一次磁盘操作就可完成,而无须访问它前面的记录。 在同一个随机文件的逻辑结构中,每个记录都分配有一个记
4、录号,所有的记录都由相同的字段组成并具有相同的字节长度。记录中的空白字段也必须占据空间,因此会造成一定存储空间的浪费 。8.1.3 VB文件类型文件类型3二进制文件二进制文件 一种以二进制编码存储的字节流式文件,它可以字节为单位进行快速存取,并可避免随机文件中的空间浪费,但由于不存在记录结构,文件数据的逻辑意义与存储位置,都完全需要编程者自己进行解释与控制。 8.1.3 VB文件类型文件类型8.1.4 文件操作步骤VB的三类文件的操作都有着相同的步骤:1. 打开文件打开文件 这是文件操作的第一步,由Open语句完成,一个文件只有执行打开命令后,才能对其进行读写。在VB中,文件的建立也隐含在文件
5、的打开操作中,即当用户试图打开一个不存在的文件进行写或追加操作时,系统将自动为其新建该文件。2.读写文件读写文件 文件的写入与读出,又统称为文件访问或文件存取。文件读写是文件操作的核心与目的。3关闭文件关闭文件 当程序不再使用文件时,应立刻执行关闭语句,以便释放相关的系统资源。8.1.5 文件指针 用户每打开一个文件,系统都会为其生成并维持一个文件指针,用来指示用户对文件的下一个操作位置,其作用类似于字处理软件中的光标。该指针对用户来说是不可见的,但确实存在,并对文件操作的理解有着非常大的帮助。对于大多数的文件打开方式,文件打开时文件指针指向文件的开始位置,并可随用户的文件访问而自动后移。对于
6、顺序文件和二进制,文件指针的移动单位为字节,对于随机文件移动单位为记录号。 在程序中,用户无法直接操纵文件指针,但可以通过Seek()函数与Seek语句返回或移动文件指针的当前值。 8.2.1 文件的打开 所有类型文件的打开或建立都使用Open语句,Open语句的完整格式如下:Open “文件名”For 打开方式 Access 存取类型 锁定 As #文件号 Len=记录长度Open 语句的语法包括以下几个部分:部分是否必要说 明文件名必要字符串表达式,指定文件名,该文件名中允许包括目录或文件夹及驱动器打开方式(mode)可缺省默认值为Random。为一个关键字,指定文件方式,有 Append
7、(追加)、Binary(二进制)、Input(输入)、Output(输出)、或 Random(随机)方式存取类型(access)可缺省默认值为Read Write。为一个关键字,说明打开的文件可以进行的操作,有 Read(只读)、Write(只写)、或 Read Write(可读可写) 操作锁定(Lock)可缺省默认值为Shared。为一个关键字,说明限定于其它程序打开的文件的操作,有 Shared(共享)、Lock Read(禁止读)、Lock Write(禁止写)、和 Lock Read Write(禁止读写) 操作文件号必要一个有效的文件号,其前面的“#”号为可选,范围在 1 到 511
8、 之间。在一个程序同时打开多个文件时,文件号不允许重复。使用 FreeFile 函数可得到下一个可用的文件号记录长度可缺省小于或等于 32,767(字节)的一个数。对于打开随机文件,该值就是记录长度。对于顺序文件,该值就是缓冲字符数。对于二进制文件,则忽略该参数8.2.2 文件的关闭所有文件关闭操作都使用相同的Close语句,其格式为:Close 文件号列表说明:(1)Close的作用是关闭已打开的文件,同时释放文件在打开时所分配的缓冲区与文件号。(2)Close语句可以同时关闭多个已打开的文件。如Close #1,#2,#3,表示同时关闭文件号为1、2、3的三个已打开文件。(3)若省略文件号
9、列表参数,则将关闭 Open 语句打开的所有活动文件。(4)程序在退出时,会自动将所有尚未关闭的文件实施关闭操作。(5)顺序文件的写操作只是简单地写入内存中的缓冲区,仅当缓冲区满或在文件被关闭时,才将缓冲区中的数据写入磁盘文件。(6)Close语句也可以过程的形式执行,即:Close(文件号列表) 8.2.3 文件处理函数与语句函数名称参数返回值与功能说明EOF函数文件号测试指定文件的操作指针是否到达文件末尾,如果到达则返加True,否则返回False。FreeFile无返回值为整型。返回1 到 511 之间的下一个可用的文件号,以避免文件号使用重复Loc文件号返回值为 Long型。返回在已打
10、开的文件中上一次的读/写位置。对于随机文件为记录号,对于二进制文件为字节数,对于顺序文件该函数无意义LOF文件号返回值为 Long型。返回用 Open 语句打开的文件的大小,该大小以字节为单位文件名返回值为 Long型。返回一个尚未打开的文件的大小,该大小以字节为单位Seek文件号返回值为 Long型。返回在已打开的文件中下一次的读/写位置,即文件指针的当前值 。input字节数N,文件号 返回从文件的当前位置读取的N个字节的数据。只适用于顺序文件与二进制文件。8.2.3 文件处理函数与语句2Seek语句语句格式:Seek 文件号,指定位置功能:在 Open 语句打开的文件中,设置下一个读/写
11、操作的位置,即移动文件指针。8.3.1 顺序文件的写操作1. Print #语句格式:print #文件号,输出列表说明:(1)Print #语句与前面窗体或图形框、打印机控件中的Print方法非常相似。该语句的作用是将过去输出到屏幕或打印机中的数据,转而输出到指定的文件中。(2)Print # 语句在将输出列表中的最后一个字符写入文件后会插入一个新行字符,即回车换行符(Chr(13) + Chr(10)。(3)系统会在Print#语句输出的同时自动移动文件指针,从而确保多条Print#语句的输出结果在文件中按顺序排列,而不是相互覆盖。(4)文件号为在Open语句中指定过的,与某个顺序文件相关
12、联的有效编号。(5)输出列表可以指定多个输出项,其格式与Print方法中的基本相同。当省略该参数时,Print #语句将在顺序文件中输出一个空行。(6)通常用 Line Input #读出 Print # 在文件中写入的数据。8.3.1 顺序文件的写操作2.Write # 语句格式:Write #文件号,输出列表Write # 语句与 Print # 语句的作用与用法基本相同。二者的不同之处在于,当要将数据写入文件时,Write # 语句会自动对数据项进行分隔与标识,比如,它会在数据项之间插入逗号,并自动给字符串加上双引号,给日期型与逻辑型数据两边加上“#”号。因此,在使用Write # 语句
13、时,没有必要在输出列表中使用额外的分界符与定位函数Tab()。 8.3.2 顺序文件的读操作1、Line Input #语句格式:Line Input #文件号,字符串变量说明:(1)Line Input #语句的作用为:从已打开的顺序文件中读出一行并将它分配给一个字符串变量。(2)顺序文件中的回车换行符 (Chr(13) + Chr(10)不会被输入到字符串变量中。(3)顺序文件的一个数据行如由多个数据项组成,Line Input #语句不区分数据项的分隔符与界定符,而将它们全部作为字符内容输入到变量中。(4)Line Input #语句通常与Print #语句配对使用,即用Line Inp
14、ut #语句来读取由Print#语句写入的顺序文件。8.3.2 顺序文件的读操作2、Input #语句格式:Input #文件号,变量列表说明:(1)从已打开的顺序文件的当前操作位置,按变量列表中变量的个数,顺序读出一个或多个数据项,并把它们赋给对应的变量。(2)Input #语句读取数据的单位是数据项,而不是文本行,而且每条语句允许读出多个数据。文件中数据项的分隔符有空格、回车换行符、逗号、双引号(界定字符串数据)、“#”号(界定逻辑型与时期时间型数据)等。(3)变量列表参数中的变量允许有多个,并且可以是任意数据类型,而不仅仅局限于字符串变量。但要求Input #语句在执行时,文件当前位置顺
15、序存在着与变量列表相符合的数据项序列,既要个数相符,又要类型相符。(4)为了正确读出数据,Input #语句一般只与Write#语句配合使用,即Input #语句只从由Write#语句写入的文件中读取数据。 8.4 随机文件的访问8.4.1 定义记录类型在一个随机文件中,所有的记录都必须有着相同的结构和长度,因此为了确保正确地访问随机文件,首先要使用自定义类型语句Type,根据随机文件记录的字段结构,定义一个相关的数据类型,然后使用该数据类型的变量访问随机文件。例如,对记录由“学号”、“姓名”、“成绩”三个字段组成的随机文件,可为该文件的访问,自定义如下结构的数据类型:Type Student
16、TypeNumber As String*12Name As String*10Score As IntegerEnd type为确保文件访问时记录等长,自定义数据类型中的字符串元素必须给出确定的字符长度。8.4.2 随机文件的写操作随机文件的写操作是通过Put #语句完成的,格式为:Put # 文件号,记录号,变量名说明:(1)Put #语句的作用为:将指定变量中的数据,按给定的记录号,写入已打开的随机文件中。(2)记录号为大于或等于1的整数。如记录号参数省略,则在文件指针的当前位置处写入。(3)语句中的变量必须为自定义的记录类型。(4)当记录号指向文件中一个已存在的记录时,该记录中的原有数
17、据将被覆盖;当指向一个不存在的记录时,系统将新建该记录,若新建记录号与原有记录号不连续,系统会在已有记录与新建记录间插入足够的空白记录。8.4.3 随机文件的读操作随机文件的写读作通过Get #语句完成的,格式为:Get # 文件号,记录号,变量名说明:(1)Get #语句的作用为:从已打开的随机文件中,将指定的记录读出,并将其赋给指定的变量。(2)记录号为大于或等于1的整数。如记录号参数省略,则读入文件指针指向的记录。记录号省略时,其对应位置的逗号不能省。(3)语句中的变量必须为自定义的记录类型。(4)当记录号指向文件中一个并不存在的记录时,不会出错,而是返回一个空白记录给变量。(5)文件中
18、已存在的记录数计算公式为:记录数=文件长度/记录长度其中,文件长度可由内部函数LOF(文件号)获得,记录长度可由内部函数Len(记录变量)获得。8.5 二进制文件的访问读语句格式 Get # 文件号,开始位置,变量名写语句格式 Put # 文件号,开始位置,变量名说明:(1)对于以二进制方式打开的文件,Get #语句的作用为:按指定变量的长度从指定的位置开始连续读取文件数据,并将其赋给指定的变量。(2)对于以二进制方式打开的文件,Put #语句的作用为:将指定变量中的数据,写入二进制文件的指定的位置。(3)如开始位置参数省略,则从当前文件指针指向的位置开始读或写数据。(4)读写语句中的变量可以
19、是任意类型。(5)Put #与Get #语句,在对以二进制方式打开的文件进行操作时,文件数据的定位单位为字节,而不是记录号。8.6.1 文件系统控件简介1驱动器列表框功能:用于显示用户系统中所有有效磁盘驱动器的列表。关键属性Drive:返回或设置用户在列表框上的当前选择的驱动器,默认值为应用程序所在的驱动器。为只读属性,只在运行时可用,在设计时不可用。关键事件Change:当Drive属性发生改变时触发。2目录列表框功能:从最高层开始显示指定驱动器的目录结构。关键属性Path:设置或返回列表框中的当前目录的路径,默认值为应用程序所在的驱动器。为只读属性,只在运行时可用,在设计时不可用。关键事件
20、Change:当Path属性发生改变时触发。8.6.1 文件系统控件简介3文件列表框:用于显示指定目录中的所有文件n关键属性:(1)Path属性:设置列表框中所显示文件的当前目录的路径,默认值为应用程序所在的目录。(2) Pattern (模式)属性:通过文件类型通配符,设置目录中可显示文件的子集,如设置该属性的值为“*.txt”后,表示在文件列表框中只显示文本文件,默认值为“*.*”显示所有文件。为只读属性。(3)属性:返回或设置用户在列表框上所选中的文件名及其路径,为只读属性。n关键事件:(1)Change事件:当Path属性发生改变时触发。(2)Click事件:当用户在列表框中选中某个文件时触发。8.6.2 文件系统控件的组合1.驱动器列表框与目录列表框的关联在驱动器列表框的Chang事件过程中添加如下代码:Private Sub DriveListBox_Change()End Sub上述赋值语句左边的表示引用驱动器列表框中所选定的驱动器,赋值语句右边的表示设置要在目录列表框中显示目录结构的驱动器符号。整个事件过程的作用为:当用户在驱动器列表框中改变所选定的驱动器盘符后,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030年中国昼夜节律睡眠疗法行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030年中国无线接入点行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030年中国无机颜料行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030年中国旅游服务行业市场发展现状及发展趋势与投资战略研究报告
- 2025年经济法考试新心理状态分析试题及答案
- 2025-2030年中国支撑物、支架和假肢装置行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030年中国插座组行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030年中国授粉服务行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030年中国挂耳咖啡行业发展分析及前景趋势与投资战略研究报告
- 执业药师考试相关政策研究与试题及答案
- 小学数学二年级下册-第七、八单元教材分析
- 敦煌研学旅行方案
- 2024年计算机软考(初级)程序员考试题库大全(含真题等)
- 思辨与创新智慧树知到期末考试答案章节答案2024年复旦大学
- 职业道德与法律第一课第一节课件市公开课一等奖省赛课微课金奖课件
- 2024年湖北水利发展集团有限公司招聘笔试冲刺题(带答案解析)
- (完整版)韩国商法
- 2024中国南水北调集团东线有限公司招聘笔试参考题库含答案解析
- 2024春期国开电大思政课《中国近现代史纲要》在线形考(专题检测一至八)试题及答案
- 2024猫砂行业调研报告(比亿奇、LORDE)-解数咨询
- 2024年上海市行政执法类公务员招聘笔试参考题库附带答案详解
评论
0/150
提交评论