资源预览内容
第1页 / 共36页
第2页 / 共36页
第3页 / 共36页
第4页 / 共36页
第5页 / 共36页
第6页 / 共36页
第7页 / 共36页
第8页 / 共36页
第9页 / 共36页
第10页 / 共36页
亲,该文档总共36页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第10章 文件,制作者:周黎,新编Visual Basic程序设计教程,学习重点:,1文件的分类 2文件的打开和关闭 3各类文件的读写操作 4三种基本的文件控件,10.1文件的基本概念,所谓文件,是指记录在外部存储介质上的数据的集合。例如工程文件或窗体文件。 使用文件存放数据,可以避免内存容量的限制,存储大批量的数据,在应用程序中对数据的读入和写入都比较方便。,10.1.1文件的结构,字符(Character) 构成文件的最基本的单位 字段(Field) 字段也称为域,由若干个字符组成,用来表示一个数据信息 记录(Record) 由若干个字段组成,用来表示一组相关的数据信息 文件(File) 由若干条记录组成。,10.1.2文件的分类,根据数据的使用 数据文件和程序文件 根据数据的编码方式 ASCII文件和二进制文件 根据数据的访问模式 顺序存取文件和随机存取文件、二进制存取文件,10.1.3文件的打开,格式: Open “文件名” For 模式Access操作类型锁定 As #文件号 Len=记录长度,操作类型: Read “只读” Write “只写” ReadWrite “读写皆可”,模式: Output “写”操作 Input “读”操作 Append 将数据追加到文件末尾,锁定: Shared(缺省):共享 Lock Read:禁止其它任务“读”该打开文件 Lock Write:“写” Lock ReadWrite“读、写”,文件号:(1511) 当打开一个文件并为它指定一个 文件号后,该文件号就代表该文 件直到文件被关闭后,此文件号 才可以再被其它文件使用。,例:以写的模式打开D盘Data文件夹下的notice.dat文件 Open “D:Datanotice.dat” For Output As #1 例:以读的模式打开当前文件夹下的mine.dat文件 Open “mine.dat” For Input As #2,10.1.4文件的关闭,打开文件并对文件的读写操作结束后,应将文件关闭! 格式如下: Close #文件号,#文件号 如:Close #1,#2,#3,10.1.4文件的关闭(续),说明: Close语句用来关闭使用Open语句打开的文件。Close语句具有两个作用:一是把Open语句给该文件建立的文件缓冲区中的数据写入文件中;二是释放表示该文件的文件号,供其他Open语句使用 若Close语句中省略文件号,则表示把所有用Open语句打开的文件全部关闭 若不使用Close语句关闭程序,再程序结束时,系统自动关闭所有打开的数据文件,但这将可能使缓冲区最后的内容不能写入文件中,导致写操作失败,10.1.5相关函数和语句,FreeFile函数 格式:FreeFile 功能:返回一个系统中未使用的文件号。 说明:使用该函数产生文件号,可以避免在程序中出现文件号 的冲突 2. Loc函数 格式:Loc(文件号) 功能:返回由“文件号”指定的文件的最近一次的读写位置。 说明:对于随机文件,Loc函数返回上一次读或写的记录号;对 于顺序文件,Loc函数返回自文件打开以来读或写的记录个数,10.1.5相关函数和语句(续),LOF函数 格式:LOF(文件号) 功能:返回文件的长度(字节数) EOF函数 格式:EOF(文件号) 功能:判断文件指针是否到达文件末尾。 说明:对于顺序文件,当文件指针到达文件的最后一个字符或 数据时,EOF函数返回True,否则返回False;对于随机文件和 二进制文件,当最后一次执行Get语句无法读出完整的记录时, EOF函数返回True,否则返回False,10.1.5相关函数和语句(续),Seek函数 格式:Seek(文件号) 功能:返回由“文件号”指定的文件的当前读写位置 说明:Loc函数返回最近一次读写的位置,因此,Seek函数的返 回值为Loc函数返回值加1 Seek语句 格式:Seek #文件号,位置 功能:设置下一个读写位置 说明:对于顺序文件,“位置”指的是字节数;对于随机文件来 说,“位置”指的是记录号。若位置超出文件长度时,系统自动 扩展该文件 ,10.2顺序文件的读写,10.2.1顺序文件的写操作 在VB中,对顺序文件的写操作主要使用Print # 和Write #语句实现 Print #语句 格式:Print #文件号,Spc(n)|Tab(n)表达式;|, 功能:与Print语句类似,只不过将输出的数据写入文件中 说明:(1)#文件号表示某文件,其余各部分的功能同Print语句 (2)实际上,Print #语句的任务只是将数据送到Open语句开辟的缓冲区,只有在缓冲区满、执行下一个Print #语句或关闭文件时,才由文件系统将缓冲区数据写入磁盘文件,10.2.1顺序文件的写操作(续),Write #语句 格式:Print #文件号,Spc(n)|Tab(n)表达式;|, 功能:与Print语句类似,只不过将输出的数据写入文件中 说明:Write #语句和Print #语句的区别在于: (1)用Write #语句写到文件中的数据以紧凑格式存放,各个数据之间用逗号作为分隔符,并且给字符串加双引号作为定界符; (2)用Write #语句写入的正数前没有表示符号位的空格,10.2.2顺序文件的读操作,Input #语句 格式:Input #文件号,变量列表 功能:从一个顺序文件中读取若干个数据项,依次赋给相应的变量 说明: (1)读取数据项的个数与变量的个数相同,数据项的类型也必须与变量的类型一致 (2)读取时将忽略前导的逗号、空格和回车换行,把遇到的第一个非空格、非回车换行作为数据的开始,对于数值型数据,把后面再遇到的第一个空格或后好或回车换行符作为数据的结束;对于字符型数据,把后面再遇到的第一个不在双引号内的逗号或回车换行作为数据的结束 (3)最好使用Write #语句输入数据到文件中,因为Write #语句能将写入的数据项有效地分开,10.2.2顺序文件的读操作(续),Line Input #语句 格式:Line Input #文件号,字符串变量 功能:从顺序文件中读取一个完整的行,并把它赋给一个字符 串变量 说明:Line Input #语句读取一行中的全部字符,包括空格、 逗号、双引号,直到遇回车符为止,常用来复制文本文件 Input函数 格式:Input(n,#文件名) 功能:返回从顺序文件中读取的n个字符的字符串 说明:Input函数返回的字符串中包含读到的所有字符,包括作 为前导的空格、逗号、双引号和回车换行符 使用Input函数可以将一个文件的内容一次性读出,存放在一个 变量中,如:x$=Input(LOF(1),#1) (详细解释参见书本),10.2.3顺序文件的应用,顺序文件的读和写操作,可以方便地对顺序文件进行各种操作应用,如修改、复制和删除等 在进行顺序文件的修改时,必须把其中的数据读出来修改,使用中间文件进行暂存,然后还原成只剩原文件的状态。数据的修改是在从原文件中读出后进行的,然后将修改后的数据放入中间文件。还原的操作可以通过先删除原文件,然后将中间文件改为原文件的名字来实现,10.3随机文件的读写,随机文件有以下特点:随机文件的记录是定长的记录,每条记录都有一个记录号,通过记录号就可以找到该记录在文件中的位置 随机文件中的记录可以是一个数据项,也可以由多个数据项构成,10.3.1随机文件的写操作,随机文件的写操作是通过Put #语句来实现的 格式:Put #文件号,记录号,变量 功能:将内存单元中的数据写入磁盘文件中 说明: (1)记录号可以省略,若省略则将数据写到当前记录后,但占位符逗号不可以省略 如:Put #1, , datastu (2)变量的类型要与文件中记录的类型一致,可以是基本类型,也可以是记录类型(Type定义的类型) (3)在使用Put #语句进行数据的写入时,还必须注意数据的长度和Open中Len子句定义的长度的匹配,10.3.2随机文件的读操作,随机文件的写操作是通过Get #语句来实现的 格式:Get #文件号,记录号,变量 功能:将磁盘文件中的数据读到变量中 说明:Get #语句中的各个参数的含义均与Put #语句类似,10.3.3随机文件的应用,在第八章例8-8的基础上,将个人信息存放在文件中,所有显示的信息都从文件中读出,修改信息必须写入文件中,界面如图(代码参见书本),10.4二进制文件的读写,使用二进制访问的模式将使对文件的操作更为方便简捷,任何文件都可以使用二进制访问的模式打开,并且可以获取文件中的任何一个字节 二进制文件的读和写操作和随机文件一样,分别使用Get #语句和Put #语句进行读写操作,此时操作的基本单元将不再是记录,而是以字节为单位、以变量为单元的存取。使用二进制访问模式可以方便地对任何文件进行复制操作,10.5文件系统控件,VB中提供的文件系统控件有三种: 驱动器列表框(DriveListBox) 目录列表框(DirListBox) 文件列表框(FileListBox),10.5.1驱动器列表框(DriveListBox),工具箱上 的按钮即为驱动器列表框按钮,实际上,驱动器列 表框是一个下拉式列表框,在执行时下拉列表中包含了系统中 所有的驱动器名,(a)设计状态,(b)运行状态,10.5.1驱动器列表框(DriveListBox)(续),属性 驱动器列表框除了具有列表框的基本属性外,还包含有一个隐式属性Drive属性,用来设置或返回所选择的驱动器名。Drive属性不能在属性窗口中设置,只能在程序代码中用语句设置。如驱动器列表框的Name属性为Drive1,则通过下列语句改变选项:Drive1.Drive=”C:” 默认情况下,Drive属性表示当前驱动器。修改Drive属性并不能修改系统的当前驱动器,要修改当前的工作驱动器,还需要使用ChDrive语句。如下面的语句将当前驱动器修改为驱动器列表框中的驱动器 如:ChDrive Drive1.Drive 同样,使用ChDrive语句也不会改变驱动器列表框中的选项,而仅修改当前驱动器号,10.5.1驱动器列表框(DriveListBox)(续),事件 驱动器列表框常用的事件为Change事件,每次重新选择驱动器列表框中的选项或修改驱动器列表框的Drive属性时都会触发该事件 如: Private Sub Drive1_Change() ChDrive Drive1.Drive End Sub,10.5.2目录列表框(DirListBox),工具箱上 的按钮即为目录列表框按钮,在执行时 目录列表框中以属性结构显示了当前驱动器的目录结 构,并突出显示当前目录,目录列表框,10.5.2目录列表框(DirListBox)(续),属性 隐式属性Path属性,用来设置或返回目录列表框中突出显示的目录名。双击某列表项目录将改变Path属性,并重新设置目录列表框中的显示内容可以使用语句来修改当前的目录,如:Dir1.Path= “D:123“ 修改目录文件夹的Path属性,只会改变目录文件夹中的显示及目录文件夹的当前目录,并不能改变系统中当前驱动器的当前文件夹,需要改变当前驱动器的当前文件夹可以使用ChDir语句 如:ChDir Dir1.Path,驱动器列表框和目录列表框的变化同步,Private Sub Drive1_Change() Dir1.Path = Drive1.Drive End Sub,10.5.2目录列表框(DirListBox)(续),2. 事件 目录列表框常用的事件为Change事件,每次用户重新选择目录列表框中的选项或在代码中修改目录列表框的Drive属性时都会触发该事件 Private S
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号