[工学]北京电大 visual basic程序设计 第5章  文件处理应用程序设计方法_第1页
[工学]北京电大 visual basic程序设计 第5章  文件处理应用程序设计方法_第2页
[工学]北京电大 visual basic程序设计 第5章  文件处理应用程序设计方法_第3页
[工学]北京电大 visual basic程序设计 第5章  文件处理应用程序设计方法_第4页
[工学]北京电大 visual basic程序设计 第5章  文件处理应用程序设计方法_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5章 文件处理应用程序设计方法,掌握文件读写的基本方法掌握与文件处理相关的语句和函数的用法理解文件系统控件的基本功能了解文件管理器应用程序的开发过程,学习目标,一、文件管理器程序任务,任务描述界面设计代码设计,(1)、文件是指存储在外部存储介质上的数据的集合,是一种可以永久性存储数据的形式,操作系统以文件为单位管理数据,文件名是文件存在的标识。VB提供的驱动器列表框(DriveListBox)、目录列表框(DirListBox)和文件列表框(FileListBox)三种控件及ChDrive和ChDir两个文件管理命令语句来实现对磁盘文件进行列表、查看、删除、移动等操作。,(2)、任务创建:第一步新建工程为“文件管理”,主要用工具箱中的驱动器列表框(DriveListBox)、目录列表框(DirListBox)和文件列表框(FileListBox)及复选框(CheckBox)。第二步创建窗体Form1属性Caption为“文件系统控制”;三个标签Label属性Caption分别为“选择驱动器”、“选择文件”、“文件属性”;六个复选框的标签属性分别为“常规”、“文件夹”、“存档”、 “只读”、“系统” 、“隐藏”。,5.1.1 任务概述,利用Windows操作系统的“资源管理器”和“我的电脑”等程序,可以对磁盘文件进行列表、查看、删除、移动等操作,人们一般将这类程序称为文件管理器,主要用到的三个控件,文件列表框,驱动器列表框,目录列表框,界面设计,代码设计(详见演示),1驱动器列表框控件的Change事件 当选择驱动器列表框,改变当前驱动器会触发该控件的Change事件。因当前驱动器改变,所以目录列表框、文件列表框的路径值也因该相应改变。该事件的程序如下:Private Sub Drive1_Change() ChDrive Drive1.Drive 改变当前驱动器 Dir1.Path = Drive1.Drive 改变目录列表框的路径 Call ClearAttr 清空属性复选框组End Sub,2目录列表框控件的Change事件Private Sub Dir1_Change() ChDir Dir1.Path 改变当前目录 File1.Path = Dir1.Path改变文件列表框的路径 ShowAttr Dir1.Path 设置属性复选框组End Sub,5文件列表框控件的Click事件Private Sub File1_Click() ShowAttr File1.FileName设置属性复选框组End Sub,Private Sub ShowAttr(ByVal sPath As String) Dim iAttr As Integer 存储文件的属性值 iAttr = GetAttr(sPath) 获取文件的属性值 If iAttr And vbNormal Then 判断是否为普通文件 Check1(0).Value = Checked 若是,则普通属性复选框被选中 End If If iAttr And vbReadOnly Then 判断是否为只读文件 Check1(1).Value = Checked 若是,则只读属性复选框被选中 End If If iAttr And vbHidden Then 判断是否为隐藏文件 Check1(2).Value = Checked 若是,则隐藏属性复选框被选中 End If If iAttr And vbSystem Then 判断是否为系统文件 Check1(3).Value = Checked 若是,则系统属性复选框被选中 End If If iAttr And vbDirectory Then 判断是否为目录(文件夹) Check1(5).Value = Checked 若是,则文件夹属性复选框被选中 End IfIf iAttr And vbArchive Then 判断是否为存档文件 Check1(4).Value = Checked 若是,则存档属性复选框被选中 End IfEnd Sub,二、文件系统控件及相关语句,(一)改变当前驱动器 语法:Chdrive 例如:ChDrive “D” 将当前驱动器改为D,(2) 改变当前目录 语法:ChDir 说明:ChDir语句改变缺省目录位置,但不会改变缺省驱动器位置。例如:ChDir “D:TMP” 将当前目录改变为D:TMP,二、文件系统控件及相关语句,(三) 删除文件 语法:Kill 说明:可以使用“*”和“?”例如:Kill “D:DataTest.txt” Kill “C:Temp*.tmp”,二、文件系统控件及相关语句,(四) 拷贝文件 语法:FileCopy ,二、文件系统控件及相关语句,(五) 对文件重命名 语法:Name As 说明:Name语句重新命名文件并将其移动到一个不同的目录或文件夹中。例如:Name “Oldfile” As “Newfile” Name “C:mydiroldfile” As “C:yourdirnewfile”,二、文件系统控件及相关语句,(六) 创建新的目录(或文件夹) 语法:MkDir 或 例如:MkDir “成绩单”,二、文件系统控件及相关语句,(七)删除目录(或文件夹) 语法:RmDim 或 例如:RmDir “C:成绩单临时文件夹”,二、文件系统控件及相关语句,(八)得到当前的路径 语法:CurDir 驱动器名 说明:返回指定的或当前驱动器的路径比如:假设C驱动器的当前路径为”C:Program Files”假定C为当前的驱动器Dim mypath as stringMypath=curdir 返回” C:Program Files”Mypath=curdir(“C”) 返回” C:Program Files”,二、文件系统控件及相关语句,(九) 设置文件属性 语法:SetAttr , 说明:文件属性值是常数或数值表达式,其总和用来表示文件的属性。文件属性值取值如表P126比如:SetAttr “Test.txt”,vbArchive+vbReadOnly,二、文件系统控件及相关语句,(十) 得到文件属性 语法:GetAttr 说明:该函数返回一个Integer类型数据此数值为文件、目录华文件夹的属性,属性值的取值同表P126,比如:iAttr=GetAttr(“test.txt”),二、文件系统控件及相关语句,(十一) 常用文件系统控制,二、文件系统控件及相关语句,1.驱动器列表框 (1) 常用属性:Drive 该属性用于在程序运行时设置或返回选定的驱动器,只在运行阶段有效。 如:Drive1.Drive=“C”注意:Drive属性只是指定了当前驱动器,而要想使指定的驱动器真正成为当前驱动器,还必须使用ChDrive语句。 如:ChDrive Drive1.Drive (2) 重要事件:Change事件,2.目录列表框 (1) 常用属性:Path 该属性用于设置或返回当前目录的完整路径,包括驱动器名和上级目录名。Path属性只在运行阶段有效。如:Dir1.Path=“C:Visual BasicStu”注意:Path属性只是指定了当前目录,而要想使指定的目录真正成为当前目录,还必须使用ChDir语句。如:ChDir Dir1.Path(2) 重要事件:Change事件,3.文件列表框 常用属性 (1)Path属性:与目录列表框相同,用于设置文件列表框所示的完整路径名称。 如:File1.path=“C:Visual BasicStu”(2)Pattern属性:设置文件列表框中可以显示的文件类型。默认值为*.*,表示显示所有文件。如:File1.Pattern=“*.txt”(3)FileName属性:设置或返回选定的文件名称,只在运行阶段可用。,三、标准文件输入/输出,顺序文件随机文件二进制文件,文件结构是指数据某种特定的存放方式。Visual Basic文件通过记录、字段和字符组成。. 字符(Character):是构成文件的最基本单位。字符可以是数字、字母、特殊符号。. 字段(Field):即字段域或域。若干个字符组成一个字段,用来表示一项数据。例如:姓名 “张三”就是一个字段,它由4个字符(2个中文字符)组成。. 记录(Record):一组相关的字段组成一个记录。例如:在学生信息表中,每个学生的学号、姓名、性别、年级、班号、各科成绩等多个字段,构成一个记录。在Visual Basic中,一般以记录为单位处理数据。. 文件(File):一个或多个记录构成文件。例如:在学生信息表中,有100个学生的信息,每个学生信息是一个记录,100个记录构成一个学生信息表文件。,三、标准文件输入/输出,根据文件中数据的存取方式和结构,可分为顺序文件和随机文件和二进制文件; 顺序文件(Sequential File):文件的记录一个接一个地按顺序进行存放,每条记录的长度随信息需要而设置(记录长度不固定)。在这类文件中,只提供第一个记录的存放位置,其它记录位置无法获悉。当要查找某个数据时,只能从文件头开始,一个记录一个记录地顺序读取,直至找到要查找的记录为止。顺序文件无法灵活地对文件进行拼接、插入、修改和存取操作,适用于有规律、不经常修改的数据。,文件分类:,根据文件的内容可以分为程序文件和数据文件; 根据文件的编码可以分为文本文件和二进制文件;,随机存取文件(Random Access File):又称直接存取文件,简称随机文件。与顺序文件不同,文件中每个记录的长度是固定的,记录中的每个字段的长度也是固定的。在访问随机文件中的数据时,不必考虑各个记录的排列顺序或位置,可以根据需要直接访问文件中的任意记录。随机文件的每个记录都有一个记录号。在写入数据时,只要指定记录号,就可以把数据直接存入指定位置。反之,在读取数据时,通过记录号可以直接读取该记录。在随机文件中,可以同时进行读、写操作,因而能快速地查找和修改记录。适用于读写有固定长度记录结构的文本文件或二进制文件。,LOF函数 格式:LOF (文件号) LOF函数以字节为单位返回用Open语句打开的文件大小,即文件的长度。“文件号”的含义同前。在Visual Basic中,文件的基本单位是记录,每个记录的默认长度是128个字节。因此,对于由Visual Basic建立的数据文件,LOF函数返回的将是128的倍数,不一定是实际的字节数。可以用FileLen获得未打开的文件长度。,EOF函数 格式:EOF(文件号) EOF函数用来测试文件的结束状态,即测试是否到达文件末尾。“文件号”的含义同前。对于顺序文件来说,如果已到文件末尾,则EOF函数返回True,否则返回False。对于随机文件,如果最后执行的Get语句未能读到一个完整的记录,则返回True,否则返回False。,(一)顺序文件 一般来说,在以下条件下使用顺序文件(顺序访问数据文件): 不需要经常修改文件内容; 修改文件内容时,不需要跳跃文件内容位置; 只需要在文件末尾添加文件信息。 如果一个文件已经存在,则打开该文件,如果不存在,则建立该文件。,1.顺序文件的打开和关闭 1)打开 格式:Open For As # 功能:打开或建立指定的文件。 说明: 1) 文件名是 所要打开的文件的名称,其中包含完整的路径名称。 2) 模式指文件的打开方式,可以使以下三者之一: Input:以读方式打开文件。 Output: 以写方式打开文件。 Append: 以追加方式打开文件。 3) 文件号是一个1511之间的整数,同时被打开的每个文件的文件号不能相同。,例如: Open “A:D1.Dat” For Input As #1Open “A:D2.Txt” For Output As #2,(2) 关闭顺序文件 格式:Close # ,# 说明: 1) 文件号是Open语句打开文件时指定的文件号。 2) Close 语句可以同时关闭多个已打开的文件。例如 Close #1 Close #1,#2 Close,2. 顺序文件的写操作 以Output方式或Append方式打开顺序文件后,可以使用Print #语句或Write #语句向文件中写(输出)数据。Print # 语句 格式:Print # ,输出项列表 功能:将各输出项的值写入到指定的文件中。 例如:P130,(2) Write #语句 格式:Write # ,输出项列表 功能:将各输出项的值写入到指定的文件中。 说明: Write #语句的功能与Print #语句基本相同,主要区别是: 1) Write #语句在各输出项之间自动插入逗号。 2) Write #语句为字符串加双引号。 3) Write #语句在将最后一个字符写入文件后会插入回车换行符,即Chr(13)+Chr(10)例如:P130,对比Print #语句和Write #语句的结果,可以看到:(1)Print # 语句在输出项中,用逗号分各输出项,则可以按分区格式输出,而用Write #语句虽然也用逗号分各输出项,但是并不按分区格式输出,而是在输出项之间用逗号分隔,所以对于Write #语句而言,采用逗号分各输出项,还是分号分隔输出项,二者是没有差别的。(2)Print #语句生成的数据文件,数据项之间没有引号;而Write #语句生成的数据文件,数据项自动地加上了引号。,3. 顺序文件的读 以OpenFor Input As 方式打开顺序文件后,可以使用Input #语句、Line Input #语句或Input 函数从文件中读(输入)数据。 (1) Input # 语句 格式:Input # , 功能:从指定文件中读取数据并将其赋值给对应的变量。 说明: 1) 变量列表中的变量不能是数组或对象变量。 2) 变量各输多于一个是,中间用逗号分隔。 3) Input # 语句一般与Write #语句配合使用,也就是说,如果数据文件使用Write #写入生成的,那么应该用Input # 语句读取该数据文件。例如 P131,(2) Line Input # 语句格式: Line Input # ,功能:从指定文件中读出一行数据并将其赋值给字符串变量。说明:Line Input # 语句一次从文件中读取一行数据,直到遇到回车符Char(13)或回车换行符Char(13)+Char(10)为止。(2) Line Input # 语句一般与Print #配合使用。例如:P132,(3) Input 函数 格式:Input ,# 功能:从指定文件中读取指定个数的字符。 说明:函数Input返回他所读出的所有字符,包括逗号、回车键、空白列、换行符、引号和前导空格等,(二)随机文件其每条记录的长度相等,且拥有一个唯一的记录号可以随机地访问任一指定的记录,且对记录的读写操作也是可以随意选择的,随机文件的打开和关闭(1)打开随机文件 格式:Open For Random As # Len=记录长度说明:文件名是所要打开的文件的名称,其中包括完整的路径名称。记录长度用于指定随机文件每条记录的长度。默认值为128字节,取值范围为032K字节,也可以在程序中用Len函数获得记录长度。随机文件打开后,既可以从文件中读取数据,也可以向文件中写入数据。例如:Open “A:D2.Txt” For Random As #1 Len=Len(Student) (2) 关闭随机文件 同顺序文件采用Close,2. 随机文件的写操作格式:Put # ,记录号,功能:把变量中的数据写入指定文件中记录号指定的记录位置。说明:记录号是大于1的整数。省略记录号时,新记录插入到当前记录之后。例如:P133,3. 随机文件的读操作格式:Get # ,记录号,功能:从指定文件中读去记录号指定的记录,并赋值给变量。例如:P135,(三)二进制文件文件存取方式是以字节为单位对文件进行访问,允许程序读写文的任何字节,不管是文本文件还是可执行文件,都可以二进制方式访问。 打开二进制文件格式: OpenFor Binary As # 关闭二进制文件格式: Close语句 二进制文件的写操作格式: Put # ,位置,变量名 二进制文件的读操作格式: Get # ,位置,变量名,二、实例:将驱动器列表框(DriveListBox)、目录列表框(DirListBox)和文件列表框(FileListBox)等三个控件结合起来使用,并使其同步工作,以及利用它们对文件进行复制、重新命名、和删除的操作。 解答:首先创建一个窗体,其属性Caption为“文件系统控制的使用”;一个文件列表框、目录列表框、驱动器列表框、组合框;八个标签框四个命令按钮,属性分别为:“复制文件”、“重新命名”、“删除文件”、“结束操作”。各程序如下 ,(1)、装载窗体:Private Sub Form-Load () Label8.Caption = DirList.PathEnd Sub(2)、保持各文件系统控件的同步:Private Sub DriveList-Change () DirList.Path = DriveList.DriveEnd SubPrivate Sub DirLIst-Change () FileList.Path = DirList.Path Label8.Caption + DirList.PathEnd Sub,(3)、选择文件名:Private Sub FileList-Click () Label4.Caption = FileList.filename If Right$(DirList.Path,1)=“” Then choicedFile=DirList.Path+ FileList.filename Else choicedFile = DirList.Path + “ ” + FileList.filename End ifEnd Sub,(4)、确定文件列表框的显示内容:Private Sub Combo1-Click () FileList.Pattern = Combo1.TextEnd Sub,(5)、文件的复制:Private Sub cmdCopy-Click ()Dim sourFile As stringDim destFile As stringStr$ = “请输入复制目的文件”SourFile = choicedFileDestFile=inputBox$(str2$, “复制文件”)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论