版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1第9章文件本章导读 了解常用文件的分类。 掌握顺序文件、随机文件的基本操作。 掌握文件系统控件的具体使用方法。 熟悉文件系统对象FSO来进行文件管理。2第9章文件9.1文件概述1.顺序文件顺序文件一般是普通的文本文件,文件中的各条记录按顺序存放,记录的长度根据需要发生变化。这类文件只提供了第一个记录的位置,其他记录的位置则无法获得,因此对顺序文件的存取,只能从头到尾依次进行,追加记录只能在文件的末尾进行。要对文件内部进行修改,就必须将整个文件读到内存中进行,然后再写回文件。顺序文件的组织比较简单,适用于有一定规律且不经常修改的数据,其优点是占用空间小,容易使用。缺点是修改比较麻烦,无法灵活地任意存取和增减数据。3第9章文件9.1文件概述2.随机文件随机文件是有固定长度记录结构的文本文件或二进制文件,这种文件是由相同长度的记录集合组成,而且每个记录都有一个记录号。与顺序文件不同,随机文件可以按任意次序读写,在写入数据时,只要指定记录号,就可以把数据直接存入指定位置;而在读取数据时,只要给出记录号,就能直接读取该记录。随机文件中,可以同时进行读/写操作,因而能快速地查找和修改每个记录,不用为修改某个记录对整个文件进行读/写操作。随机文件的优点是存取数据速度快,容易更新。缺点是占用空间大,程序设计麻烦。4第9章文件9.1文件概述3.二进制文件二进制文件是以二进制方式保存的文件,它适用于存储所希望的任何数据。二进制文件除了没有数据类型或记录长度的含义外,与随机文件很相似,这类文件最为灵活,而且占用空间较小。5第9章文件9.2文件系统控件9.2.1驱动器列表框驱动列表框可以显示当前系统中所有的有效磁盘驱动器。驱动器列表框的重要属性为Drive属性,用于设置或返回要操作的驱动器,Drive属性只能用程序代码设置,不能通过属性窗口设置。其使用格式如下:驱动列表框名称.Drive[=驱动器名]这里的驱动器名是指定的驱动器,若省略,则Drive属性为当前驱动器,使用ChDrive语句可以将用户选定的驱动器设为当前驱动器,比如:ChDriveDrive1.Drive驱动器的常用事件主要是Change事件。驱动器列表框的常用方法主要是Refresh方法,用于刷新驱动器列表。6第9章文件9.2文件系统控件9.2.2目录列表框目录列表框的作用是显示当前驱动器上的目录。它有一个在设计模式下不可用的Path属性,用来读取或指定当前的工作目录。当改变驱动器列表框的Drive属性时,将产生Change事件,因此只要把Drive1.Drive属性值赋给Dir1.Path,就可产生同步效果。例如:PrivateSubDrive1_Change()Dir1.Path=Drive1.DriveEndSub使用ChDir语句可以改变当前的目录或文件夹。例如,下面语句的作用是把用户在目录列表框中选取的目录设为当前目录:ChDirDir1.Path7第9章文件9.2文件系统控件9.2.3文件列表框文件列表框的作用是显示当前目录中的所有文件或指定文件的清单。1.Path属性Path属性用来指定文件列表框中被显示的文件目录。当目录列表框Dir1中的内容发生变化时,会引发Dir1的Change事件。通过把Dir1的Path属性赋值给File1的Path属性,可实现目录列表框与文件列表框的同步操作,例如:PrivateSubDir1_Change()File1.Path=Dir1.PathEndSub8第9章文件9.2文件系统控件9.2.3文件列表框2.Pattern属性Pattern属性用来限定文件列表框中显示的文件类型,默认情况下,Pattern的属性值为“*.*”,即所有文件。此属性在程序中的设置格式如下:文件列表框名.Pattern[=属性值]例如,语句File1.Pattern="*.Gif;*.Bmp"限定文件列表框File1中将只显示扩展名为Gif和Bmp的文件,注意多个扩展名字符之间用“;”分开。改变Pattern属性将产生PatternChange事件。9第9章文件9.2文件系统控件9.2.3文件列表框3.FileName属性FileName属性的值是用户在文件列表框中选定的文件名,此处的文件名可以带路径和通配符,因此可以用来设置Drive、Pattern和Path属性。4.MultiSelect属性用于设置文件列表框中是否允许选择多个文件。5.ListCount属性用于返回文件列表框中所显示的文件总数。[例9-1]设计一图片浏览器。运行例9-1程序10第9章文件9.3
顺序文件9.3.1文件的打开在VisualBasic中使用Open语句打开或建立一个文件,并指定一个文件号和文件的打开模式等。Open语句的格式如下:Open<文件名>For模式[Access存取类型][锁定]As[#]<文件号>[Len=记录长度]格式中的Open、For、As以及Len为关键字,带方括号的字段为可选项。其它参数的含义如下:①<文件名>是必要的字符表达式,用于指定要打开或建立的文件名,该文件名可以包含目录、文件夹及驱动器。11第9章文件9.3
顺序文件9.3.1文件的打开在VisualBasic中使用Open语句打开或建立一个文件,并指定一个文件号和文件的打开模式等。Open语句的格式如下:Open<文件名>For模式[Access存取类型][锁定]As[#]<文件号>[Len=记录长度]格式中的Open、For、As以及Len为关键字,带方括号的字段为可选项。其它参数的含义如下:①<文件名>是必要的字符表达式,用于指定要打开或建立的文件名,该文件名可以包含目录、文件夹及驱动器。12第9章文件9.3
顺序文件9.3.1文件的打开②模式用来指定文件的输入输出方式,可以为下述操作之一:Output:指定顺序输出方式。Input:指定顺序输入方式。Append:指定顺序输出方式。与Output不同的是,用Append方式打开文件时,文件指针被定位在文件末尾。如对文件进行写操作,则写入的数据附加到原来文件的后面,也称为追加。Random:指定随机存取方式。Binary:指定二进制方式文件,在这种方式下,可以用Get或Put语句对文件中任何位置的字节信息进行读/写。如未指定输入/输出方式,则以Random方式打开文件。13第9章文件9.3
顺序文件9.3.1文件的打开③Access是可选的关键字,说明对打开文件进行的操作种类,有Read(只读)、Write(只写)或ReadWrite(读/写)操作。操作种类指出了打开的文件中所进行的操作。如果要打开的文件已由其他过程打开,则不允许指定存取类型,否则Open出错,并产生出错信息。④[锁定]是可选的关键字,只用在多用户或多进程环境中,说明其他进程或用户能够对打开文件进行的操作,类型包括Shared(该文件完全共享)、LockRead(不允许其他进程读该文件)、LockWrite(不允许其他进程写该文件)和LockReadWrite(不允许其他进程读/写该文件)。如果不使用Lock子句,默认为LockReadWrite。14第9章文件9.3
顺序文件9.3.1文件的打开⑤<文件号>是必需的一个有效的文件号,范围在1到511之间。执行Open语句时,打开文件的文件号与一个具体的文件相关联,其它输入/输出语句或函数通过文件号与文件发生关系。⑥记录长度是可选的小于或等于32767B的一个数。对于随机访问方式打开的文件,该值就是记录长度。对于顺序文件,该值就是缓冲字节数,即确定缓冲区的大小。缓冲区越大,占用空间越多,文件的存取速度越快。15第9章文件9.3
顺序文件9.3.1文件的打开Open语句兼有打开文件和建立文件两种功能。对一个数据文件进行读、写、修改或增加数据之前,如果<文件名>指定的文件不存在,用Input方式打开文件时,将提示“文件未找到”;用Append、Binary、Output或Random方式打开文件时,则建立相应的文件;此外,在Open语句中,任何一个参量的值超出给定范围时,将产生“非法功能调用”的错误,且文件不能打开。例如,下面的语句实现打开名为Example.dat的数据文件,使记录可以写到该文件中:Open"Example.dat"ForOutputAs#116第9章文件9.3
顺序文件9.3.2文件的关闭文件的读/写操作结束后,可以通过Close语句将使用Open语句打开的输入/输出文件关闭,一般格式为:Close[[#]文件号][,[#]文件号]…例如,若用Open语句打开数据文件:Open"Example.dat"ForOutputAs#1则可以用下面的Close语句来关闭:Close#1其中,Close语句中的“文件号”是Open语句中使用的文件号,并且是可选的,如果指定“文件号”则将指定的文件关闭,否则关闭所有打开的文件。17第9章文件9.3顺序文件9.3.3
顺序文件的写操作1.Print#语句Print#语句用来将格式化显示的数据写入顺序文件中,Print#语句与Print方法的功能类似,区别在于:Print#语句写的对象是文件,而Print方法写的对象是窗体、控件或打印机。语句的一般格式如下:Print#文件号,[Spc(n)|Tab(n)][expression][charpos]说明:①文件号是有效文件号,是必须的。②Spc(n)用来在输出数据中插入空格字符,而n指要插入的空格字符个数。18第9章文件9.3顺序文件9.3.3顺序文件的写操作③Tab(n)用来将插入点定位在某一绝对列号上,在此n是列号。使用无参数的Tab将会把插入点定位在下一个打印区的起始位置。④expression是要打印的数值表达式或字符表达式表。⑤charpos用来指定下一个字符的插入点,可为分号或逗号,分别表示用紧凑格式或标准格式输出数据。[例9-2]将一组数据写入到文件中。运行例9-2程序19第9章文件9.3顺序文件9.3.3顺序文件的写操作2.Write#语句用Write#语句也可以把数据写入顺序文件中。其语法格式如下:Write#文件号,[outputlist]其中,文件号的意义同前,outputlist是表达式表。用Write语句向文件中写入数据时,系统会自动遵循以下约定,以便在用Input语句读数据时,能正确识别各自的数据类型:20第9章文件9.3顺序文件9.3.3顺序文件的写操作对于逻辑型数据,在写入文件时,均保存为#True#或#False#的形式。对于日期型数据,均采用#yyyy-mm-ddhh:mm:ss#的形式保存。日期和时间部分亦可分开保存,此时各自的表达形式为#yyyy-mm-dd#和#hh:mm:ss#。字符型数据将用双引号括起来。说明:①当用Write#语句时,文件必须以Output或Append方式打开,表达式表中的各项以逗号分开。21第9章文件9.3顺序文件9.3.3顺序文件的写操作②Write#语句与Print#语句的主要区别有两点,首先当用Write#语句将数据写入文件时,数据以紧凑格式存放,Write#语句会自动地在数据项之间插入逗号,而没有必要键入明确的分隔符,并给字符串加上双引号。一旦最后一项被写入,就插入新的一行。[例9-3]追加写入文件。运行例9-3程序22第9章文件9.3顺序文件9.3.4顺序文件的读操作1.Input#语句Input#语句用来从已打开的顺序文件中读出数据项,并把这些数据项赋给程序变量。其格式如下:Input#文件号,变量列表其中,文件号是有效的文件号,变量列表是用逗号分隔的变量列表,由一个或多个变量组成,这些变量可以是数值变量,也可以是字符串变量或数组元素,从数据文件中读出的数据赋给程序变量。注意,文件中数据项的类型应与Input#语句中变量的类型相匹配。23第9章文件9.3顺序文件9.3.4顺序文件的读操作说明:①Input#语句与InputBox函数类似,但后者要求从键盘上输入数据,而Input#语句要求从文件中输入数据,而且执行Input#语句时不显示对话框。②Input#语句也可以用于随机文件的读入。③在将数据写入文件时,最好使用Write#语句而不使用Print#语句。因为使用Write#语句可以确保将各个单独的数据域正确分开。24第9章文件9.3顺序文件9.3.4顺序文件的读操作2.LineInput语句使用LineInput语句可以从顺序文件中读取一个完整的行,并赋给一个字符串变量。具体格式如下:LineInput#文件号,字符串变量名其中,字符串变量名也可以是一个字符串数组元素名。在文件的操作过程中,LineInput#语句每次从文件中读出一个字符,直到碰到回车符或换行符为止。[例9-4]编程序演示从顺序文件中读取数据。运行例9-4程序25第9章文件9.4随机文件随机文件被组织成固定长度的记录,并以记录为单位进行存取。每条记录都有一个记录号,记录又由一个或多个字段(又称为数据项)组成,字段可以有不同的数据类型和宽度。用Open语句打开随机文件时必须指定记录长度,打开文件后,可以根据记录号访问其中的任何一条记录,既可读又可写。1.定义记录类型在打开一个文件进行随机访问之前,首先要定义一个记录类型,该类型对应于该文件包含或将包含的记录。PrivateTypestudentstuNoAsString*10nameAsString*8
phoneAsString*11scoreAsSingleEndType26第9章文件9.4随机文件2.打开随机文件用Open语句打开随机文件的格式如下:Openpathname[ForRandom]AsfilenameLen=reclength因为Random是默认的访问类型,所以ForRandom关键字是可选项。表达式Len=reclength指定每个记录的长度,随机文件通过Len()函数来获得记录的长度,一般格式为:
reclength=Len(recordvar)27第9章文件9.4随机文件3.随机文件的读/写操作随机文件的读操作用Get语句来完成,一般格式如下:
Get#文件号,[记录号],变量Get语句把由文件号所指定的磁盘文件中的数据读到变量中,记录号为要读的记录的编号,取值范围为1~2147483647。如果省略记录号,则读取下一条记录,即最近执行Get语句或Put语句后的记录。省略记录号后,逗号不能省略:
Get#文件号,,变量28第9章文件9.4随机文件3.随机文件的读/写操作随机文件的写操作通过Put语句来实现,一般格式如下:
Put#文件号,[记录号],变量这里的变量是除对象变量和数组变量外的任何变量(包括含有单个数组元素的下标变量)。文件号含义同前,记录号取值范围跟Get语句的相同,如果省略记录号,则写到下一个记录位置,即最近执行Get语句或Put语句后指定的位置。同样,省略记录号后,逗号也不能省略:
Put#文件号,,变量29第9章文件9.4随机文件4.关闭文件操作方法与顺序文件的关闭方法相同。[例9-6]编写随机文件的读写程序。运行例9-6程序30第9章文件9.5
二进制文件利用二进制存取可获取任一文件的原始字节,即不仅能获取ASCII文件,而且能获取非ASCII文件的原始字节。用户要读取或修改非ASCII格式存盘的文件,如可执行文件。用下面语句可打开二进制输入/输出文件:Open文件说明ForBinaryAs#文件号二进制文件的关闭:同样使用Close语句31第9章文件9.5
二进制文件1.二进制存取与随机存取二进制文件与随机文件的存取操作类似,表现在以下两个方式:⑴不需要在读和写之间切换,对文件既可以读又可以写。⑵读写随机文件的语句也可用于读写二进制文件,即:
Get|Put#文件号,[位置],变量其中“变量”可以是任何类型;“位置”指明下一个Get或Put操作在文件的什么地方进行。Get语句从文件中读出的字节数等于“变量”的长度;Put语句向文件中写入的字节数与“变量”长度相同。如Get和Put语句中没有指定“位置”,则文件指针每次移过一个与“变量”长度相同的距离。32第9章文件9.5
二进制文件2.文件指针在二进制文件中,可把文件指针移到文件中任意的位置。文件指针的定位通过Seek语句实现。格式为:Seek#文件号,位置Seek语句用来设置文件中下一个读或写的位置。“文件号”含义同前;“位置”是一个数值表达式,用来指定下一个要读写的位置。说明:⑴对用Binary、Input、Output或Append方式打开的文件,“位置”是从文件开头到“位置”为止的字节数,即执行下一个操作的地址。对用Random方式打开的文件,“位置”是一个记录号。33第9章文件9.5
二进制文件2.文件指针⑵在Get和Put语句中记录号优先于由Seek语句确定的位置。与Seek语句配合使用的是Seek函数,格式为:Seek(文件号)该函数返回文件指针的当前位置。对用Binary、Input、Output或Append方式打开的文件,Seek函数返回文件中的字节位置(产生下一个操作的位置)。对用Random方式打开的文件,Seek函数返回下一个要读或写的记录号。访问二进制文件时,Seek函数与Loc函数给出相似的结果。不同的是Loc函数返回的是最近一次读写过的字节的位置;而Seek函数返回的是下一次要读或写的字节位置。34第9章文件9.6
常用的文件操作语句和函数9.6.1文件操作语句1.删除文件可以用Kill语句实现,具体格式如下:Kill文件名这里文件名可以包含路径,如执行:Kill"C:\WINNT\Temp.dat“将删除C盘WINNT目录下的数据文件Temp.dat。35第9章文件9.6常用的文件操作语句和函数9.6.1文件操作语句2.文件复制用FileCopy语句可以把源文件复制到目标文件,复制后两个文件的内容完全一样。不同目录之间文件的复制,必须给出完整的路径信息。例如:FileCopy"C:\Simple1\Source.dat","D:\Simple2\Target.dat"注意:该语句不能复制已经由VisualBasic打开的文件。另外,通过结合使用Kill语句和FileCopy语句,可实现文件的移动操作。36第9章文件9.6常用的文件操作语句和函数9.6.1文件操作语句3.建立和删除目录在VB中可以通过MkDir语句建立一个目录,RmDir语句删除一个文件目录。例如:MkDir"C:\Firdir"将在C盘创建一个新目录C:\Firdir(如果目录已经存在了,VB将提示出错),而语句:
RmDir"C:\Firdir"将删除C:\Firdir目录。37第9章文件9.6常用的文件操作语句和函数9.6.2
文件操作函数1.FreeFile()函数用FreeFile()函数可以得到一个在程序中没有使用的文件号。当程序中打开的文件较多时,可以利用这个函数,把未使用的文件号赋给一个变量,并且用这个变量做文件号,而不必知道文件号是多少。其一般格式如下:FreeFile[(rangenumber)]38第9章文件9.6常用的文件操作语句和函数9.6.2文件操作函数2.FileLen()函数此函数返回以PathName参数指定的文件的长度,单位为字节,一般格式如下:FileLen(PathName)使用该函数,目标文件不要求打开,如果文件已经
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 借名买车合同审核要点
- 房行租房合同
- plc铣床课程设计总结
- 2023年西安银行招聘中层管理人员考试真题
- 2023年上海歌剧院招聘考试真题
- 信息技术支撑下的高中英语跨学科主题学习模式研究
- 瓦工施工合同
- 2023年湖南劳动人事职业学院招聘考试真题
- 春节放假工作计划(13篇)
- 暑假三下乡心得体会10篇
- 高质量的幼儿园教育
- 小学体育-轻度损伤的自我处理教学课件设计
- 第一章-公路概论课件
- 基于PLC的水箱温度控制系统
- 十三项核心制度-上海第十人民医院
- 危险化学品企业设备完整性管理专项行动方案
- 七步洗手法 课件
- YYT-0664-2020医疗器械软件软件生存周期过程核查表
- 学科前沿讲座-公共关系(2022下)学习通课后章节答案期末考试题库2023年
- 注射低分子肝素患者知情同意书
- 化妆品生产质量管理规范(2022年)PPT
评论
0/150
提交评论