版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第12章文件,主要内容 文件系统控件: 文件列表框、目录列表框、驱动器列表框 顺序文件的读写操作: 文件打开(Open)、文件关闭(Close) 文件读操作(Input) 、 文件写操作(print 、 write) 随机文件的读写操作: 文件打开(Open) 、文件关闭(Close) 文件读操作(Get) 、 文件写操作(Put),12.1 文件系统控件P247,文件系统控件有三种: 驱动器列表框(DriveListBox) 目录列表框(DirListBox) 文件列表框(FileListBox),文件列表框,默认名称为File1,目录列表框 默认名称为Dir1,驱动器列表框 默认名称为Dr
2、ive1,12.1.1驱动器列表框,驱动器列表框DriveListBox是下拉式列表框,驱动列 表框DriveListBox默认控件名是Drive1. Drive属性: 用来设置或返回所选择的驱动器名。 Drive属性只能用程序代码设置,不能通过属性窗口设置,其格式为: .Drive= 例:Drive1.drive=C 2.Change事件: 当选择一个新的驱动器或通过代码改变 Drive 属性的设置时发生。,12.1.1 驱动器列表框p247,例:在窗体上添加一个驱动器列表框,然后执行下列代码,则输出结果如何?若选择“g:”盘,则输出结果如何? Private Sub Form_Load()
3、 Drive1.Drive = d End Sub Private Sub Drive1_Change() MsgBox 选中的驱动器是: + Drive1.Drive End Sub,12.1.2 目录列表框p247,目录列表框:显示目录结构,默认名是Dir1. 1. Path属性: 设置或改变目录列表框的目录路径。 语法格式为: . Path = 2. Change事件: 在目录列表框中双击一个新的目录或通过代码改变目录列表框 Path 属性的设置时发生该事件。,例:程序运行后,设置当前目录为c:program files Private Sub Form_Load() Dir1.Path
4、 = c:program files End Sub,12.1.3文件列表框p248,文件列表框可以用来显示当前目录下的文件列表, 默认控件名是File1。 1.主要属性: Path: 设置或返回所显示的文件的绝对路径, 只能在运行时设置。 FileName:返回在文件列表框中选定的文件名. Pattern: 设置或返回文件列表框中所显示的文件类型. 可以在属性窗口设置,也可以通过代码设置,默认值“*.*” (表示所有文件) 2.主要事件:Click(单击列表框发生) Dblclick(双击),12.1.3文件列表框,例12-1 建立一个简单的文件管理系统,实现文件系统控件的基本功能。在窗体上
5、建立一个驱动器列表框、目录列表框和文件列表框,一个组合框Combo1,它决定文件列表框中显示的文件类型,程序运行后, 要求程序运行后,三个列表框要实现同步效果,同时在文件列表框中下选择一个文件后,在输出框中输出选中的文件名。,12.1.3文件列表框,Private Sub Form_Load() Item = 所有文件(*.*) Combo1.AddItem Item Item = 窗体文件(*.frm) Combo1.AddItem Item Item = 位图文件(*.bmp) Combo1.AddItem Item Combo1.ListIndex = 0 End Sub,Private
6、 Sub Combo1_Click() Select Case Combo1.Text Case 所有文件(*.*) File1.Pattern = *.* Case 窗体文件(*.frm) File1.Pattern = *.frm Case 位图文件(*.bmp) File1.Pattern = *.bmp End Select End Sub,12.1.3 文件列表框,Private Sub Drive1_Change() Dir1.Path = Drive1.Drive 目录与驱动器同步 End Sub Private Sub Dir1_Change() 文件与目录同步 File1.P
7、ath = Dir1.Path End Sub Private Sub File1_Click() MsgBox 选定的文件名: + File1.FileName End Sub,12.1.3 文件列表框,如果要使用户双击文件列表框中的某个可执行文件(扩展名为exe的文件),就能立即执行,则可以编写如下代码: Private Sub File1_DblClick() ChDir Dir1.Path 转到当前目录 Returnvalue = Shell(File1.FileName, 1) 调用可执行文 End Sub (运行后,双击 “NOTEPAD.EXE”文件,则打开记事本应用程序,12.
8、2.1 文件的概念,文件: 指存储在计算机外部介质上一组相关信息的集合,计算机的操作系统是以文件为单位对数据进行管理的(目的:长期保存)。,文件的基本操作: 读:从文件中读取信息。 写:将信息写入文件中。,12.2.2 文件的基本结构,字符: 数据文件中的最小单位,如单个的字节、数字、字符等。 字段: 一般由若干个字符组成的一项独立的数据,如学生的班号、姓名等均为字段。,记录: 由若干相关字段组成的一个逻辑单位,如学生的班号、姓名等多个字段组成一个记录。 文件: 是由一个以上、结构相同的相关记录的集合,如一个班的所有学生记录组成一个文件。,表示: 6个字段 2个记录,12.2.3 文件分类,顺
9、序文件: 文件中的记录一个接一个存放,记录长短可不同,访问时只能从第一条记录访问到最后一条记录(特点:只能顺序访问,速度慢)。 随机文件: 每条记录的长度相同,可以按记录号直接访问文件中的任一记录。(特点:可以随机访问,速度快) 二进制文件: 直接将二进制代码存入文件,可以按字节随机访问文件中的数据。,12.3.1 顺序文件访问模式,1.打开顺序文件 格式: Open “文件名” For Input | Output | Append As # 文件号 说明: Input :从要打开的文件中读出数据。 Output:把数据写到文件中。 Append:把数据追加到文件的末尾 文件号:代表被打开文
10、件的文件号,1511之间 例:如果要打开C:USER目录下一个文件名为SCORE.TXT的文件,对它写文件,指定文件号为#1,则命令为: Open “C:USERSCORE.TXT” For Output As #1,12.3.1 顺序文件访问模式,2. 写操作(将数据写入文件中) 要将数据写入文本文件,应以Output或Append方式打开该文件。然后使用Print #或者Write #语句将数据写入文件中: Print # 文件号, 输出列表 Write # 文件号, 输出列表 说明:Write : 不管输出的数据项之间是“;”还是“,”,输出时均按紧凑格式输出,在数据项之间自动添加“,”
11、分隔符,并给字符型的数据加上双引号,日期型逻辑型加#号。,12.3.1 顺序文件访问模式,3.顺序文件的关闭 当结束对文件的操作后,必须要关闭文件,否则会造成数据的丢失. Close#文件号1,#文件号2 例:close #1 Close :关闭所有的文件,12.3.1 顺序文件访问模式,例12-2:区别Write命令和Print命令,编写如下程序代码,Write :不管数据项之间是“;”还是“,”,输出时均按紧凑格式输出,在数据 项之间自动添加“,”分隔符,并给字符型的数据加上双引号。,注意:在打开文件时,文件号前#可以有,也可以没有。但用print或write写数据时#不能省,#可以省略,
12、Private Sub Form_Click() Open D:test.txt For Output As #1 Print #1, 123, 123 Print #1, 123; 123 Write #1, 123, 123 Close #1 End Sub,12.3.1 顺序文件访问模式,例:在“d:下建立一个顺序文件f1.txt,内容如图。,Private Sub Command1_Click() 写顺序文件 Open d:f1.txt For Output As 1 Write #1, 1, 2, 3 Write #1, 4, 5 Close #1 End Sub,06年9月等级考试
13、,(34)设有语句:Open“d:Test.txt” For Output As #1, 下列叙述中错误的是( )。 A)若d盘根目录下无Test.txt文件,则该语句创建此文件 B)用该语句建立的文件的文件号为1 C)该语句打开d 盘根目录下一个已存在的文件Test.txt, 之后就可以从文件中读取信息 D)执行该语句后,就可以通过Print #语句向文件Test.txt 中写入信息,C,06年9月等级考试,(35)下列叙述中错误的是( )。 A)顺序文件中的数据只能按顺序读写 B)对同一个文件,可以用不同的方式和不 同的文件号打开 C)执行Close语句,可将文件缓冲区中的 数据写到文件中
14、 D)随机文件中各记录的长度是随机的,D,12.3.1 顺序文件访问模式p252,3. 读操作(将文件中的数据读出来, 有三种方式) 1)Input # 语句 格式:Input #文件号, 变量列表 功能:从已打开的顺序文件中读出数据,并将数据指定给 用逗号分界的变量列表中的变量。,Private Sub Command2_Click() 读顺序文件 Open d:f1.txt For Input As 1 Input #1, a, b Print a, b End Sub,12.3.1 顺序文件访问模式,3.读操作 2)Line Input # 语句 格式:Line Input #文件号,
15、字符型变量 从已打开的顺序文件中读出一行并将它分配给字符串变量。,Private Sub Command3_Click() 读顺序文件 Cls Open d:f1.txt For Input As 1 Line Input #1, a Line Input #1, b Print a Print b Close #1 End Sub 注意:Line Input #1, a,b是错误的写法,例:将“d:f1.txt 内容按行读出,并在窗体上输出。,区别Input和Line Input,Private Sub Command2_Click() 读顺序文件 Open d:f1.txt For Inp
16、ut As 1 Input #1, a, b Print a, b End Sub,Private Sub Command3_Click() Cls Open d:f1.txt For Input As 1 Line Input #1, a Line Input #1, b Print a Print b Close #1 End Sub,12.3.1 顺序文件访问模式,3. 读操作 3)Input函数 格式:Input$(读取的字符数,#文件号) 功能:从文件号指定的文件中当前位置读入指定 数量的字符。,Private Sub Command4_Click() Open d:f1.txt F
17、or Input As 1 Print Input(12, #1) 读12个字符并输出 或 Print Input(LOF(1), 1) 将整个文件一次读出 Close #1 End Sub,注意回车和换行符算两个字符,12.3.1 顺序文件访问模式 _与文件读写有关的两个重要函数,LOF函数:LOF(文件号) 功能: 返回文件号代表的文件的长度。大小以字节 为单位,一个键盘字符占一个字节,一个汉字占两 个字节。若返回值为0,则表示该文件是个空文件。 注意:回车和换行符算两个字符. 2.EOF函数: EOF(文件号) 功能: 表明是否已经到达打开的文件的末尾,若 到文件的末尾,则函数值为Tru
18、e,否则为False。,LOF函数:LOF(文件号) 功能:返回文件号代表的文件的长度。 2. EOF函数: 若到文件的末尾,则函数值为True,否则为False。,Private Sub Form_Click() Cls Open d:f1.txt For Input As 1 Print 文件长度:; LOF(1) Print EOF(1) Do While Not EOF(1) 没结束,则读文件 Input #1, a Sum = Sum + a Print a, Loop Print Print EOF(1) Print 文件中数的和为:; Sum Close #1 End Sub,1
19、2.3.1 顺序文件访问模式 _与文件读写有关的两个重要函数,07年4月等级考试实验 P242-16,(11)在窗体上画一个命令按钮和一个文本框,其名称分别为Command1和Text1,然后编写下列事件过程: Private Sub Command1_Click( ) Dim inData As String Text1.Text= Open d:myfile.txt For 【14】 As #1 Do While 【15】 Input # 1,inData Text1.Text=Text1.Text+inData Loop Close #1 End Sub 以上程序的功能是:打开D盘根目录
20、下的文本文件myfile.txt,读取它的全部内容并显示在文本框中。请填空。,14、input 15、not eof(1),12.3.1 顺序文件访问模式,例12-4 综合演示顺序文件的多种读写方式,12.3.1 顺序文件访问模式,例12-4 综合演示顺序文件的多种读写方式,Private Sub Command7_Click() 建立f1.dat文件 Open d:f1.txt For Output As 1 Write #1, 1, 2, 3 Write #1, 4, 5 Close #1 End Sub,Command7,例12-4 综合演示顺序文件的多种读写方式,Private Sub
21、 Command3_Click() 将文件按行读到文本框中 Dim inputdata As String Text1.Text = Open d:f1.txt For Input As #1 Do While Not EOF(1) 未结束,则读文件 Line Input #1, inputdata 读一个记录,保存在 inputdata Text1.Text = Text1.Text Next i Close #1 End Sub,Private Sub Command6_Click() 清除文本框内容 Text1.Text = End Sub,12.3.2随机文件访问方式,随机文件:是由一
22、组长度相等的记录组成的文件。,特点: 在随机文件中,每个记录长度固定 每个记录都有一个记录号,读写数据时, 只需指定记录号即可。 无须按顺序存取,数据的存取灵活、速度快。,12.3.2随机文件访问方式P255,1.打开和关闭随机文件 打开随机文件 Open “文件名” For Random As #文件号 Len =记录长度,说明: 1)打开随机文件后,既可写操作,也可读操作。 2)For Random指定文件是以随机方式打开,也可 以省略。 3)记录长度:指定读写操作时一条记录的长度, 若省略,记录长度默认为128个字节。 关闭随机文件:Close,12.3.2 随机文件访问方式p255,2
23、 读写操作: 1)写操作: Put # 文件号, 记录号, 将表达式的值写入文件中由记录号指定的记录位置上 注意: 如果省略记录号,则表示写入的位置是当前记 录之后。 如果尚未进行读写,则为第一条记录. 2)读操作:将文件中的记录读入变量。 Get # 文件号 , 记录号, 变量名,#可以省略,7.5 自定义数据类型(记录类型)P163,Public| Private Type 自定义类型名称 元素名1 (下标) As 类型名称 元素名2 (下标) As 类型名称 元素名n (下标) As 类型名称 End Type,说明: 1.类型名称为标准类型(如Integer、single1等) 2.自
24、定义类型元素类型如果是字符串型,则必须 是定长字符串.,7.5 自定义数据类型P163,自定义数据类型应用步骤:,用type定义一个记录类型 例: Public Type ID 类型名称为ID,包含两个数据项 Score As Integer Score 存成绩 Name As String * 6 存姓名 End Type 定义自定义类型的变量或数组 dim person1 as ID 引用:变量. 元素名 =“张强” person1.Score=89,06.9,(14)有下列用户定义类型: Type Student number As String name As
25、String age As Integer End Type 则下列正确引用该类型成员的代码是( )。 A)S=李明 B)Dim s As Student =李明 C)Dim s As Type Student D)Dim s As Type =李明 =李明,b,12.3.2 随机文件访问方式,例12-5 :读写随机文件。创建一个窗体模块和一个标准模块,再建一个命令按钮,程序运行后,单击窗体,则在当前目录下建立一个文件“score.dat”,文件内容是含有4个学生的记录。每个记录包括两个数据项(name和score用于保存每条记录的姓名
26、和成绩).单击“读一条记录”, 则在三个文本框中显示文件长度、姓名和语文成绩.,12.3.2 随机文件访问方式,1) 定义自定义数据类型, 执行“工程添加模块,输入代码: Type ID 定义一个记录类型,名字为ID,包含两个数据项 Score As Integer Name As String * 6 End Type,定义后,每个记录长度为2+6=8 (store为整型,占2个字节),2)定义记录类型变量,用open 、put语句建立随机文件,Private Sub Form_Click() 建立随机文件,包含4个记录 Dim person1 As ID 定义一个记录类型的变量person
27、1 Open d:store.dat For Random As #1 Len = Len(person1) person1.Name = 张强 person1.Score = 87 Put #1, 1, person1 写入第一条记录,#可以省略 person1.Name = 李小明 person1.Score = 97 Put #1, 2, person1 person1.Name = 王平 person1.Score = 83 Put #1, 3, person1 person1.Name = 赵志钢 person1.Score = 72 Put #1, 4, person1 Close
28、 #1 #可以省略 End Sub,引用:变量. 元素名 =“张强 person1.score=87,10.3.2 随机文件访问方式,3)用open 、get语句将随机文件中记录读到变量中,然 后用print语句输出,Private Sub Command1_Click() 随机读出一条记录 Dim person1 As ID : Dim i As Integer Cls Open d:store.dat For Random As #1 Len = Len(person1) Text1.Text = LOF(1) 文件长度 Randomize i = Int(4 *
29、Rnd + 1) 产生的随机数为1,4之间的整数 Get #1, i, person1 读出第i条记录,存储到记录类型变量person1中 Text2 = person1.Name Text3 = person1.Score Close #1 End Sub,12.3.3 访问二进制文件,1. 根据数据的编码方式,文件可以分为 ASC文件: 即文本文件,可以使用字处理软件建立和修改 二进制文件: 以二进制方式保存文件,以字节数来定位数 据,不能用字处理软件进行编辑,但占用的空间 较小。 2. 二进制文件打开 Open “文件名” For Binary As # 文件号 打开后,可以用Get和P
30、ut进行读写操作。,12.4 常用文件操作语句与函数(一般了解),1.Kill 语句:从磁盘中删除文件 格式:kill 文件名 2. FileCopy语句:复制一个文件 格式:FileCopy 源文件名,目标文件名 3. Name 语句 : 重新命名一个文件、目录 格式:Name 源文件名 As 新文件名,Private Sub Command1_Click() Open d:f1.txt For Output As 1 Write #1, 1, 2, 3 Write #1, 4, 5 Close #1 End Sub Private Sub Command2_Click() FileCopy
31、 d:f1.txt, d:f2.txt 复制文件 Name d:f1.txt As d:f3.txt 文件更名 End Sub,12.4 常用文件操作语句与函数,4. ChDrive语句:改变当前驱动器 格式: ChDrive 驱动器名 5. MkDir语句:创建一个新的目录 格式:MkDir 目录名 6. ChDir语句:改变当前目录 格式: ChDir 路径 7. RmDir 语句:删除指定的空目录 格式:RmDir 目录名 8. CurDir 函数:返回指定驱动器的当前目录 格式:CurDir ,12.4 常用文件操作语句与函数,Private Sub Command3_Click()
32、ChDir d: 使d:为当前目录 Kill f2.txt 删除当前目录下(即d:)的文件f2.txt Kill d:f2.txt 上两句等价该句 End Sub Private Sub Command4_Click() ChDir d: MkDir 071112101 在d:目录下创建文件夹071112101 MkDir 071112102 End Sub Private Sub Command5_Click() Print CurDir(d) 输出d盘当前目录 RmDir d:071112102 删除目录 End Sub,12.4 常用文件操作语句与函数(补充),1.Filelen函数 格
33、式:filelen(文件名) 功能:返回文件名指定的文件的长度,文件不需要打开 2.freefile函数 格式:freefile (范围) 参数范围可以为0或1,表示文件号的范围. freefile或freefile(0)返回1255之间未使用的最小的文件号 freefile(1)返回256511之间未使用的文件号,例:Open j:filel.txt For Input As 1 Open j:filemyfirst.txt For Input As 2 Print FreeFile(0),结果:3,12.4 常用文件操作语句与函数(补充)实验书P234-9,3.fileattr函数: 测试
34、文件是以何种方式打开的,返回值是数值。,Private Sub Form_Click() Open j:fileL.txt For Output As 1 Open j:filemyfirst For Input As 2 Print FreeFile(0), FileAttr(1), FileAttr(2) End Sub,1以input方式打开 2以output方式打开 4以random 方式打开 8以append方式打开 32以Binary方式打开,输出结果: 3 2 1,12.5 综合应用程序举例实验书P55-3,补例():等级考试上机题: 在窗体上画一个组合框,名称为Cb1,并输入三个列表项,“3”、“7”、“11”(通过List属性设置,列表项的顺序不限,但必须是这三个数字,画一个名称为Text1的文本框,再画一个名称为C1、标题为“计算”的命令按钮,如图1所示,请编写适当的事件过程,使得程序运行时,在组合框中选定一个数字后,单击“计算”按钮,则计算
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 政府公务人员招录考试题型解析
- 职称评定中监督工作的考核与评价标准
- 网络工程师面试宝典及考题预测
- 2025年国际贸易及合作发展项目可行性研究报告
- 2025年人工智能在金融服务业应用项目可行性研究报告
- 2025年水资源节约型城市建设项目可行性研究报告
- 2025年数字学习平台开发项目可行性研究报告
- 2025年远程医疗服务平台构建项目可行性研究报告
- 2026年平顶山文化艺术职业学院单招职业适应性测试题库及参考答案详解
- 2026年辽阳职业技术学院单招职业适应性考试题库及参考答案详解1套
- 申论笔试题目及答案
- 基于显性核不育的棉花分子轮回选择育种体系的建立
- 网络游戏跨平台兼容性测试计划制定
- 有限空间作业中毒窒息应急处理预案
- DB46T665-2025 乡镇(街道)民政服务站建设和管理规范
- 承插式盘扣脚手架专项施工方案
- 《教育技术学导论》课件
- 《客家文化之擂茶》课件
- 【MOOC】计算机网络-中国科学技术大学 中国大学慕课MOOC答案
- 【MOOC】行政法与行政诉讼法学-西南政法大学 中国大学慕课MOOC答案
- 当代中国政治制度-004-国开机考复习资料
评论
0/150
提交评论