1、第7章 文件,7.1 文件管理控件7.2 文件处理7.3 示例,作业 实验 掌握 重点 预习,淮海工学院 Visual Basic 程序设计,1. 驱动器列表框(DriveListBox)在运行时,可选择一个有效的磁盘驱动器。该控件用来显示用户系统中所有有效磁盘驱动器的列表。(1) 常用属性 Name属性:缺省时,值为:“Drive1” Drive属性:用来设置和返回驱动器列表框中的当前驱动器。 此属性是运行时属性,不能在属性窗口中设置。设置语句格式:驱动器列表框名. Drive =驱动器名例如:Drive1.Drive=“C:”(2) 常用事件 Change事件:是驱动器列表框中最常用的事件
2、常用语句(3) 常用语句:ChDrive语句 功能:改变当前工作驱动器。 格式: ChDrive Drive 如: ChDrive “D”,7.1 文件管理控件,2、目录列表框(DirListBox) 显示用户系统的当前驱动器的目录结构和路径。这个控件可以显示分层的目录列表。(1) 常用属性 Name属性:缺省时,值为“Dir1” Path属性:用来设置和返回目录列表框中的当前目录。此属性是运行时属性,不能在属性窗口中设置。设置语句格式: 目录列表框名.Path=路径例如:Dir1.path=“c:Program Fileaa(2) 常用事件:Change事件(3) 常用命令: ChDir语句
3、 功能:设置当前工作目录 格式:ChDir 路径 如:ChDir “C:Windows”,7.1 文件管理控件,3. 文件列表框(FileListBox) 在运行时列出由文件列表框控件的Path属性指定目录中的文件。(1) 常用属性 (详细) Name,Path,Pattern,FileName,ListCount,ListIndex,List(2) 常用事件: PathChange事件:当文件列表框的Path属性改变时产生 PatternChange事件:当文件列表框的Pattern属性改变时产生 Click事件组合使用文件系统控件 (参见例7-1,P131),7.1 文件管理控件,Name
4、属性:缺省时,值为“File1”Path属性:用来设置和返回文件列表框中所显示文件的路径。 此属性是运行时属性,不能在属性窗口中设置。 语句:File1.Path=路径或 File1.Path=Dir1.PathPattern属性:用来设置在程序运行时文件列表框要显示的某一种类的文件 该属性即可在属性窗口设置,也可以通过程序代码设置。 格式:窗体.Pattern=属性值;属性值例如:File1.Pattern=“*.exe”FileName属性:用来设置和返回文件列表框中将显示的文件名称。 该属性可以带有路径和通配符。该属性是运行时属性。 语法格式:窗体名. FileName=文件名称例如:F
5、ile1.Filename=“D:*.exe”ListCount属性:用于组合框、驱动器列表框、目录列表框和文件列表框。返回控件内所列项目的总数。该属性是运行时属性。使用文件属性可以使用文件属性(Archive、Normal、System、Hidden和Readonly)来指定在文件列表框中显示哪一类文件。缺省时,System和Hidden属性为False.,文件是指存放在磁盘上的一系列相关的字节。VB有三种文件访问类型: (1) 顺序访问 适用于普通的文本文件。文件中的每个字符代表一个文本字符或者文件格式符(如:回车、换行符等) 文件中的数据以ASCII码方式存储。 (2) 随机访问 文件是
6、由一组相同长度的记录组成的。 记录可以由标准的数据类型的单一字段组成,也可由用户自定义类型变量所创建的多个字段组成。每个字段的数据类型可以不同但长度固定的。 文件中的数据以二进制方式存储。允许在任何时候访问文件的任何地方。 (3) 二进制访问 文件可以存储任意希望存储的数据。它没有对数据类型和记录长度的假定;但须知道数据是如何写入的,以便正确地读写它们。 该访问模式中,不能随意定位读取数据。 文件中的数据是顺序地、成块地被读取的。其本质:文件数据在磁盘中的存储格式与其在内存中的存储格式一致,7.2 文件处理,1.文件访问的语句 (参见P136-P140)(1) 打开文件语句 OPEN语句语法格
7、式:Open 文件名FOR模式Access存取类型锁定 As#文件号Len=记录长度(2) 关闭文件语句 CLOSE语句 语法格式:Close #文件号,#文件号(3) 关闭所有打开的文件语句 RESET语句 语法格式: Reset(4) 锁定和解锁语句 Lock和UnLock语句 语法格式:Lock #文件号,记录范围 Unlock #文件号,记录范围(5) 定位语句 Seek 语句语法格式:Seek #文件号,位置,7.2 文件处理,(1) 尾部确认函数 EOF函数格式:EOF(文件号)(2) 返回访问模式 FileAttr函数格式: FileAttr(文件号,返回类型)(3) 返回文件长
8、度 Filelen 函数格式: Filelen(文件名)(4) 下一个有效文件号 FreeFile 函数 格式:FreeFile (文件号范围) (5) 返回文件字节数 Lof 函数格式: Lof(文件号)(6) 返回最近一次读写位置 Loc 函数 格式: Loc (文件号)(7) 返回当前读写位置 Seek 函数格式: Seek (文件号),7.2 文件处理,2.文件操作函数(参见P140-P141),1.顺序文件的写操作 (1) 打开文件 语法格式: Open 文件名 FOR Output| Append As # 文件号 (2) Print # 语句 语法格式: Print # 文件号,
9、输出列表 其中:输出列表的形式:SPC(n)|Tab(n)表达式分隔符,7.3 顺序文件,说明:SPC(n):用来在输出位置插入n个空格 Tab(n):用来将其后的输出项定位在第n列 分隔符:逗号或分号,打印格式分别对应标准格式或紧凑格式,(1) 标准格式输出(用“ , ”) 例如: Open “Test.Dat” For Output As # 10 Print # 10, 1,2,3 Print # 10,”we”,”study”,”VB5.0” Close 10,Print # 语句的输出格式,(2) 紧凑格式输出(用“ ; ”) 例如: Open “Test.Dat” For Outp
10、ut As # 10 Print # 10, 1;2;3 Print # 10,”we”;”study”;”VB5.0” Close 10,打印结果: 1 2 3 w study VB5.0,打印结果: 1 2 3 westudyVB5.0,(3) 字符串数据的输出 为使输出字符串有明显地区分,在字串间插入“ , ”,作为分隔符. 例如: Print # 10,”we”; ”,” ;”study”; ”,” ;”VB5.0”,打印结果: we,study,VB5.0,1.顺序文件的写操作 (3) Write # 语句 语法格式:Write # 文件号,输出列表说明:用Write # 语句写到文
11、件中的数据以紧凑格式存放,各数据之间插有逗号作为分隔符用Write # 语句写到文件中的字符串,系统自动地在其首尾加上双引号作为字符串数据的定界符,对于正数,在其前面不再留有空格,7.3 顺序文件,例如: Open “Test.Dat” For Output As # 12 Write # 12,1,-2,3,“ABC” Write # 12 Write # 12,5,6,7,“DEF”, Write # 12 Close 12,Write # 语句的输出格式,执行结果:写到文件“Test.Dat”中的数据是: 1,-2 ,3,“ABC” 5,6,7,“DEF”,2.顺序文件的读操作 (1)
12、Input #语句 语法格式: Input # 文件号,变量表(2) Line Input #语句 语法格式:Line Input # 文件号,变量表(3) Input # 函数 语法格式: Input(n,# 文件号),7.3 顺序文件,说明:n是任意合法的数值表达式,指从文件中一次读出字符的个数与Input语句不同,Input函数返回所读的所有字符,包括前导空格、逗号、双引号以及回车换行符。,3.使用外部程序处理顺序文件外部程序指:记事本,写字板等文本编辑器 4. 顺序文件的应用 VB提供的InputBox函数是用来接受用户通过键盘输入的数据。由于这个函数每次只能从键盘接受一个数据,因此使
13、用它来给程序输入大量的数据将会非常不方便。 如果一个应用程序需要从外部输入较多的数据时,一般的做法是:事先使用文本编辑程序将数据按照某种格式存放在文本文件中,然后在程序中使用相关语句从文件中读入数据给相应的变量,7.3 顺序文件,以随机存取(Random Access)方式存取的文件称随机文件。 随机文件是由一组长度相等的记录组成。,7.4 随机文件处理,随机文件特点 (1)随机文件的记录是定长的。 (2)记录包含有一个或多个字段(又称为域),只有一个字段的记录对应于任何一个标准类 (3)随机文件打开后,既可读又可写,可以根据记录号访问文件中任何一个记录,无需按顺序进行。,7.4 随机文件处理
14、,1.变量的声明(1) 定义记录类型如果记录由多个字段组成,则须在标准模块中自定义数据类型,例如: Type Student_Score Name As String*8 Student_Id As String End Type,(2) 声明变量 如:Public Score As Student_Score,2.随机文件的打开 语法格式: Open 文件名 For Random As# 文件号 Len=记录长度 3.随机文件的写操作 语法格式: Put # 文件号,记录号,变量 4. 随机文件的读操作 语法格式: Get # 文件号,记录号,变量 5.增加、删除随机文件中的记录 (P154
15、),7.4 随机文件处理,1. 任何类型的文件(顺序文件或随机文件)都可以以二进制访问模式打开,二进制存取可以获取任何一个文件的原始字节。 2. 二进制使用GET#语句获取数据,用PUT#语句写入数据。 3. 二进制存取模式与随机存取模式不同之处是: 二进制存取可以定位到文件中的任一字节位置,而随机存取要定位在记录的边界上 二进制存取从文件中读取数据或向文件写入数据的字节长度取决于GET#语句或PUT#语句中“变量”的长度,而随机存取方式读写固定个数的字节(一个记录的长度),7.5 二进制文件,示例:学生成绩录入示例 请演示中的程序,录入:把成绩写入文件 Private Sub Cmdinpu
16、t_Click() Dim number As String * 6 Dim score1 As Integer, score2 As Integer Dim return1 As String return1 = Chr(13) & Chr(10) Open App.Path + “考试成绩.txt“ For Append As #10 number = xh.Textscore1 = Val(bs.Text)score2 = Val(js.Text)Text1 = Text1 & number & Str(score1) & Str(score2) & return1Write #10,
17、number, score1, score2, score1 + score2 Close #10 xh.Text = CStr(Val(number) + 1) End Sub,从文件中读出成绩: Private Sub CmdDwj_Click() Dim number As String * 6 Dim score1 As Integer, score2 As Integer, score3 As Integer Dim return1 As Stringreturn1 = Chr(13) & Chr(10) Text2 = “Open App.Path + “考试成绩.txt“ For
18、 Input As #10DoInput #10, number, score1, score2, score3Text2 = Text2 & number & Str(score1) & Str(score2) & Str(score3) & return1Loop Until EOF(10)Close #10 End Sub,作业,本章后练习题 第4题 (第156页),实验,实验10: 实验10-2 实验10-4,掌握,驱动器列表框 Drive属性 Change事件 目录列表框 Path属性 Change事件 文件列表框 filename,listIndex属性 Click事件 三个文件控件的同步 文件的基本概念,顺序文件的处理,重点,三个文件控件的同步 顺序文件的处理,预习,第9章 图形处理与多媒体应用,