第八章文件2020/2/242内容提要文件系统控件文件结构及分类顺序文件的访问文件操作的语句和函数2020/2/243文件系统控件文件系统控件为了管理计算机中的文件,VB提供了三个文件系统控件:驱动器列表框、目录列表框和文件列表框。驱动器列表框(DriveListBox)是下拉式列表框,是一种能显示系统中所有有效磁盘驱动器的列表框。其默认控件名是Drive1。驱动器列表框2020/2/244重要属性文件系统控件Drive属性:用于返回或设置驱动器的名称,默认为当前驱动器。其格式为:[对象].Drive[=驱动器名]说明:(1)其中“对象”为驱动器列表框对象的名称。例如:Drive1.Drive=“C:\”(2)从列表框中选择驱动器并不能自动改变系统当前的工作驱动器,必须通过ChDrive语句来实现。例如:ChDriveDrive1.Drive2020/2/245重要事件文件系统控件Change事件:程序运行时,从列表框中选择一个新驱动器或通过代码改变Drive属性的设置时会触发驱动器列表框的Change事件。例如:将在驱动器列表框中选择的驱动器设置为当前驱动器,可在该事件中编写代码:PrivateSubDrive1_Change()ChDriveDrive1.DriveEndSub2020/2/246文件系统控件目录列表框(DirListBox)用来显示当前驱动器目录的层次结构,供用户选择其中一个目录为当前目录。其默认控件名是Dir1。目录列表框2020/2/247重要属性文件系统控件Path属性:用于返回或设置当前路径,必须通过程序代码设计其属性值。其格式为:[对象].Path[=字符串表达式]说明:(1)“对象”为目录列表框对象;“字符串表达式”用来表示路径名。默认为当前路径。例如:Dir1.Path=“C:\hp”(2)从目录列表框中选择目录并不能自动改变系统当前的工作目录,必须通过ChDir语句来实现。例如:ChDirDir1.Path2020/2/248重要事件文件系统控件Change事件:程序运行时,双击一个目录项或通过代码改变Path属性的设置时触发目录列表框的Change事件。事件过程为:PrivateSubDir1_Change()…EndSub2020/2/249文件系统控件文件列表框(FileListBox)用来显示特定驱动器特定目录下的文件,其默认控件名是File1。文件列表框2020/2/2410重要属性文件系统控件属性名属性值说明Path字符串设置或返回当前目录的路径名。该属性只能在运行阶段设置。Pattern字符串设置要显示的文件类型,默认时表示所有文件。FileName字符串返回所选文件的文件名(不包括路径),该属性在设计状态下不可用。ListCount数值返回文件列表框中匹配Pattern属性设置的文件个数。该属性在设计状态下不可用。ListIndex数值返回控件中当前选择项目的索引号,其值范围为1~ListCount-1。该属性只能在运行中引用。List(i)字符串返回或设置文件列表框控件的列表部分的列表项目的内容。2020/2/2411重要事件文件系统控件(1)PathChange事件:是Filename属性指定的文件的Path属性改变时触发的事件。(2)PatternChange事件:是Filename属性指定的文件的Pattern属性改变时触发的事件。(3)Click事件:是单击文件名时触发的事件。(4)DblClick事件:是双击文件名时触发的事件。2020/2/2412文件系统控件驱动器列表框、目录列表框和文件列表框有密切关系。改变驱动器列表框中的驱动器名后,目录列表框中的目录应当随之变为该驱动器上的目录,并进一步引发文件列表框文件列表的变化,即应使驱动器列表框、目录列表框和文件列表框产生同步效果。可通过以下语句实现:PrivateSubDrive1_Change()Dir1.Path=Drive1.Drive’驱动器列表框EndSub’和目录列表框同步PrivateSubDir1_Change()’目录列表框File1.Path=Dir1.Path’和文件列表框同步EndSub文件系统控件的同步操作2020/2/2413在窗体上分别画一个驱动器列表框、一个目录列表框、一个文件列表框、一个标签,一个文本框。单击驱动器列表框可变更当前驱动器,同时引发目录列表框内信息和文件列表框信息的同步变更,单击文件列表框某一文件,将该文件名在文本框中显示。例8-1文件系统控件2020/2/2414文件结构及分类文件结构及分类字符:是构成文件的最基本单位。字段:也称域,字段由若干个字符组成,用来表示一项数据。如学号(“2005121201”)是一个字段。记录:由一组相关的字段组成。如在学生基本信息表示中,每个学生的学号、姓名、性别、出生日期等构成一个记录。文件:由记录构成,一个文件由一个以上的记录组成。文件结构2020/2/2415文件结构及分类按文件存储介质分类可分为磁盘文件、磁带文件、打印文件等。按文件存储数据性质分类(1)程序文件在VB中,扩展名为.exe、.frm、.vbp、.bas的文件都是程序文件。(2)数据文件即普通的数据文件,如学生的考试成绩,职工的工资。这类数据必须通过程序来存取。文件分类2020/2/2416文件结构及分类按文件的存取方式和结构分类(1)顺序文件文件中的记录一个接一个存放,记录长短可不同,访问时只能从第一条记录访问到最后一条记录(即:只能顺序访问)。文件分类#1记录1#2记录2……#N记录N记录1记录2……记录N文件结束标志(2)随机文件可以直接访问文件中的任意一个记录。记录长度相同;根据记录号访问。2020/2/2417文件结构及分类按数据的编码方式分类(1)ASCII文件又称文本文件,它以ASCII方式保存文件,这种文件可以用字处理软件建立和修改,保存文件时,按纯文本文件保存。(2)二进制文件(BinaryFile)直接把二进制码存放在文件中,对其访问是以字节数来定位数据。文件分类2020/2/2418文件结构及分类(1)打开(或建立)文件一个文件必须先打开或建立后才能使用。如果一个文件已经存在,则打开该文件;如果文件不存在,则建立该文件。(2)文件的读、写操作在文件处理中,把内存中的数据传输到外部设备(如磁盘)并作为文件存放的操作叫做写数据(输出),而把数据文件中的数据传输到内存程序中的操作叫做读数据(输入)。(3)关闭文件当结束读写操作后,还必须将文件关闭,否则会造成数据丢失等现象。数据文件的操作步骤2020/2/2419文件结构及分类文件被打开后,自动生成一个文件指针(隐含的),文件的读写就是从这个指针所指的位置开始的。完成一次读写操作后,文件指针自动移到下一个读写操作的起始位置。文件指针2020/2/2420顺序文件的访问顺序文件的访问格式:Open文件名For方式As[#]文件号功能:按指定的方式打开一个文件,并为文件指定一个文件号。打开文件2020/2/2421顺序文件的访问(1)方式有三种:①OutPut:新建或打开一个文件,进行写操作。文件若存在,则打开,写入信息覆盖原有信息;文件若不存在,则新建。②Input:打开一个文件,进行读操作。文件必须存在,否则出错。③Append:新建或打开一个文件,进行写操作。文件若存在,则打开,写入信息追加在原有信息之后;文件若不存在,则新建。(2)文件号:界于1至511之间的整数。当打开一个文件并为它指定一个文件号后,该文件号就代表该文件,直到文件被关闭后,此文件号才能被其他文件使用。说明:2020/2/2422顺序文件的访问Print语句格式:Print#文件号,[输出列表]功能:将输出列表的内容写入指定的文件。Write语句格式:Write#文件号,[输出列表]功能:将输出列表的内容写入指定的文件。注意:Write语句将数据项之间插入“,”,并加上双引号。写操作2020/2/2423Print语句和Write语句输出数据结果的比较。例8-2顺序文件的访问2020/2/2424在窗体上添加1个文本框、2个命令按钮,要求给文本框输入内容,分别单击命令按钮,将文本框内容以文件的形式写入磁盘。例8-3顺序文件的访问2020/2/2425顺序文件的访问Input语句格式:Input#文件号,变量列表功能:从文件中依次读出数据,并放在变量列表对应的变量中。LineInput语句格式:LineInput#文件号,字符串变量名功能:从指定的文件中读取一行数据,并放在”字符串变量名”中。读操作2020/2/2426顺序文件的访问Input函数格式:Input$(读取字符数,#文件号)功能:从指定的文件的当前位置一次读取指定个数的字符。InputB函数格式:InputB(字节数,#文件号)功能:从指定的文件的当前位置一次读取指定字节数的数据。读操作2020/2/2427用字处理程序(如“记事本”)在D盘建立一个名为xecd.txt的文件,将该文件的内容在文本框中显示出来。例8-4顺序文件的访问2020/2/2428顺序文件的访问格式:Close[[#]文件号][,[#]文件号]……功能:可一次关闭多个文件,并释放与该文件相关的“文件号”。说明:(1)文件号是可选项,若省略此项,则把所有打开的数据文件全关闭,否则只关闭指定的文件。(2)如果程序中没有Close语句,在程序结束时,系统将自动关闭所有打开的数据文件。关闭文件2020/2/2429文件操作的语句和函数文件操作的语句和函数读操作的两个重要函数:(1)LOF函数格式:LOF(文件号)功能:返回指定文件的字符数(文件长度)。(2)EOF函数格式:EOF(文件号)功能:用来测试文件的指针是否到达文件末尾。