收藏 分享(赏)

第九章(文件).ppt

上传人:hyngb9260 文档编号:7733773 上传时间:2019-05-24 格式:PPT 页数:42 大小:625.50KB
下载 相关 举报
第九章(文件).ppt_第1页
第1页 / 共42页
第九章(文件).ppt_第2页
第2页 / 共42页
第九章(文件).ppt_第3页
第3页 / 共42页
第九章(文件).ppt_第4页
第4页 / 共42页
第九章(文件).ppt_第5页
第5页 / 共42页
点击查看更多>>
资源描述

1、第九章 文件,9.1 文件系统控件 9.2 文件的读写 9.3 常用的文件操作语句和函数,文件系统控件在工具箱以及界面中的形式:,DriveListbox (驱动器列表框),DirListbox (目录列表框),FileListbox (文件列表框),9.1 文件系统控件,9.1 文件系统控件,9.1.1 驱动器列表框 9.1.2 目录列表框 9.1.3 文件列表框,9.1.1 驱动器列表框 是一种列表框,单击向下箭头时,显示用户系统中所有有效磁盘驱动器 。Drive属性: 返回运行时选择的驱动器。*设计时不可用 使用形式: 对象.Drive = drive其中: 对象.:驱动器列表框的名称;

2、drive:指定所选择的驱动器 。Change事件:该事件在重新设置Drive属性引发,例9.1 有一窗体界面及运行结果如图所示,其“代码设置驱动器”按钮的Click事件如下:Private Sub Command1_Click()Drive1.Drive = “d:“ Print “您已经把驱动器设置为:“; Drive1.DriveEnd Sub,9.1.2 目录列表框显示选中驱动器的目录结构及其当前目录下的所有子目录。 Path属性 :返回当前路径。 *设计时不可用 使用形式: 对象.Path = pathnamepathname:一个指示路径的字符串 Change事件:重新设置Path

3、 属性引发Change事件,例9.2 界面如右图.要求: 1、驱动器改变时,目录框能随之改变 Private Sub Drive1_Change()Dir1.Path = Drive1.Drive End Sub2、当按显示当前路径按钮时,在文本框里能够显示当前路径 Private Sub Command1_Click()Text1.Text = Dir1.Path End Sub,9.1.3 文件列表框显示所选驱动器、所选目录下的指定文件类型的文件Path属性:返回当前路径,显示该路径下的文件。*设计时不可用 *重新设置Path属性引发 “PathChange” 事件。,Pattern属性:

4、返回或设置文件列表框中显示的文件类型。使用形式: 对象.Pattern = valueValue:一个用来指定文件规格的字符串表达式,例如“ *.FRM”,表示显示*.frm文件,缺省值是 “*.*” ,表示显示所有文件。多个时可用”*.jpg;*.gif;*.bmp”表示 *重新设置Pattern属性引发 “PatternChange” 事件,FileName属性用于设置或返回所选文件的文件名* 设计时不可用;设置时可带路径;引用时只返回文件名(不包括路径) 如 File1.FileName 若想得到完整文件名(含路径)需将Path属性和FileName属性配合使用。,Click、DblCl

5、ick事件:单击文件列表中某个文件进行选择时,该事件发生,例9.3 窗体上有一文件列表框和一个标签,当选择某一个文件时,在标签上显示该文件的全名(包括路径),Private Sub File1_Click()Dim fullname As StringIf Right(File1.Path, 1) = “ Thenfullname = File1.Path & File1.FileNameElsefullname = File1.Path & “ & File1.FileNameEnd IfLabel1.Caption = fullname End Sub,例9.4 设计窗体界面如图8.5.5

6、所示的文件管理系统。要求驱动器框、目录框和文件框实行联动。当用户单击按钮时,如果选中的是图片文件,则相应图片显示在影像框Image1中;如果是非图片文件则调用相应程序打开此文件。,算法分析:,1、驱动器改变时,如何实现目录列表框内容改变事件:Pritve Sub Dirve1_Change()代码:Dir1.Path=Drive1.Drive 2、目录列表框内容改变时,如何在文件列表框中显示相应目录下的文件事件: Private Sub Dir1_Change()代码:File1.Path=Dir1.PathFile1.Pattern=Combo1.Text 3、文件类型改变时,如何改变文件框

7、中的文件事件: Private Sub Combo1_Click()代码: File1.Pattern=Combo1.Text,Private Sub Form_Load() 窗体装入时,为Combo1添加内容Combo1.AddItem “*.*“Combo1.AddItem “*.bmp;*.jpg;*.gif“Combo1.AddItem “*.exe;*.com“Combo1.AddItem “*.txt“Combo1.AddItem “*.frm“Combo1.ListIndex = 0End Sub,Private Sub Drive1_Change()Dir1.Path = Dr

8、ive1.Drive 目录的路径和驱动列表框的同步End Sub,Private Sub Dir1_Change()File1.Path = Dir1.Path 文件的路径和目录的同步File1.Pattern = Combo1.Text 从combo1得到文件的模式End SubPrivate Sub Combo1_Click()File1.Pattern = Combo1.Text 文件模式改变时,更新文件框中的内容End Sub,Private Sub Command1_Click()If Right(File1.Path,1) = “ Then 获取文件的路径和名称fullname =

9、 File1.Path & File1.FileNameElsefullname = File1.Path & “ & File1.FileNameEnd Iftmp =Ucase(Right(fullname,3) ) 取出文件名中扩展名If tmp = “JPG“ Or tmp = “GIF“ Or tmp = “BMP“ ThenImage1.Picture = LoadPicture(fullname) 加载图片文件End IfIf tmp = “TXT“ Or tmp = “FRM“ Thentmp = Shell(“notepad.exe “ & fullname) 调用系统的记事

10、本打开选择的文件End IfIf tmp = “EXE“ Or tmp = “COM“ Thentmp = Shell(fullname)End If 直接运行本可执行文件End Sub,9.2 文件的读写,9.2.1 有关文件的基本概念 9.2.2 顺序文件 9.2.3 随机文件,9.2.1 有关文件的基本概念,1. 记录由若干个相互关联的数据项组成的一组数据。例如:学生成绩文件中存放着某班级同学的成绩,则每个同学的数据包括:,数据项,2. 文件:存储在外部介质上,以文件名为标识的记录的集合指磁盘或硬盘,3. 文件的操作: 读操作:从文件中读出数据(文件内存)写操作:向文件中写入数据(内存文

11、件) 4. 文件的分类: 按访问模式划分,顺序文件:按顺序依次把记录写入文件或把记录读出来。 随机文件:可以根据记录号直接访问文件中的任意一个记录。,9.2.2 顺序文件,打开文件,读出或写入,关闭文件,操作步骤:,顺序文件的特点:1. 记录长度不固定;2. 文件中写入、读出的顺序一致;3. 文件以ASCII代码形式存放数据。,一 顺序文件的打开和关闭: 1. 打开文件:Open “文件名” For 模式 As #文件号 Len=记录长度 (1) 模式OUTPUT:打开一个文件,并将对其进行写操作两种情况:若打开文件不存在,相当于建立新文件若打开文件已存在,则原文件中数据删除INPUT:打开一

12、个文件,并将对其进行读操作注意:必须打开已存在的文件,否则会出错。APPEND:追加数据到文件未尾(打开文件已存在)注意:若打开文件不存在,相当于建立新文件;,(2) 文件号:1511范围内任一整数(3) 记录长度:可省略小于等于32767的整数,用来指定数据缓冲区的字符数。例:Open “1.txt” For Output As #12 2. 关闭文件: Close #文件号, #文件号.例如,Close #1, #2, #3 Close:关闭所有打开的文件。注意:必须及时关闭文件,否则会造成数据丢失,二、顺序文件的写操作:将数据写入文件的操作。 1. Print #文件号,输出列表按输出列

13、表指定的格式将数据输出到指定到的文件中注意:print方法中各种输出格式仍然适用,如spc , tab, 逗号,分号例如:Print #1, “one“, “two“, 123, 456 例9.5 Print方法和Print #的区别 例9.6 保存窗体上的数据到文件中,2. Write #文件号,输出列表特点:紧凑格式,自动在数据项间插入“,”,字符输出后会自动加双引号。例如: Write #1,“One”,“Two”,123,456注意区别Print 和Write 例9.6 用Write保存窗体上的数据到文件中,条件函数,(2) Choose 函数 Choose(数字型变量,值为1的返回值

14、,值为2的返回值) 例如:根据Nop是14的值,转换成、运算符Op=Choose(Nop, “”,”,”,”),(1) IIF 函数 IIF (表达式,当条件为True的值,当条件为False的值) 例如:求x,y中最大值,放入Tmax中。Tmax=IIF(xy,x,y),三、顺序文件的读操作: 将顺序文件的内容读出。 1. INPUT #文件号, 变量列表把读出的每个数据项分别存放到所对应的变量。 如: INPUT #1,a, b, c 2. LINE INPUT #文件号, 字符串变量读一行数据存放到字符串变量中 如: LINE INPUT #1,Str$ 3. INPUT$(读取字符数

15、, #文件号)随意读取指定数目的字符 如:str1$=INPUT$(100,#1)从1号文件中读取100个字符,并放入字符串str1中,例9.7 产生100个介于1001000之间的随机整数并存放在data1.dat文件中,再从中读出并把其中的素数存放在data2.dat中,最后从data2.dat文件读出并显示在窗体中,算法分析: 如何产生100个随机整数并存放在data1.dat中用For循环实现,循环体内用Rnd产生随机整数后并存入data1.dat中 Open App.Path + “data1.dat“ For Output As #1 写For i = 1 To 100t = In

16、t(Rnd() * 900 + 100)Write #1, t;Next i 产生100个数并保存在文件data1 Close #1,(2) 如何从data1.dat中读出所有的数并将其中的素数存入data2.dat中a)以读方式打开data1.dat,同时以写方式打开data2.datOpen App.Path + “data1.dat“ For Input As #1 Open App.Path + “data2.dat“ For Output As #2 b)用For循环读data1.dat 100次,判断每个数是否为素数,若为素数,则写入data2.datFor i = 1 To 10

17、0Input #1, t 从data1.dat中读数据到tIf ss(t) = True Then 若是素数,则写入文件data2.datno=no+1 统计素数的个数,为输出作准备Write #2, t; 写入data2.datEnd IfNext i,c) 判断是否是素数可以用函数来实现 Private Function ss(ByVal n As Integer) As Boolean ss = TrueFor i = 2 To Int(Sqr(n)If n Mod i = 0 Thenss = FalseExit FunctionEnd IfNext i End Function,(3

18、) 从data2.dat中读出所有的素数并显示在窗体中用For循环将data2.dat中的数逐一读出并用Print方法输出到窗体循环次数为素数的个数no,Open App.Path + “data2.dat“ For Input As #2For i = 1 To noInput #2, t 读出数到变量tPrint t,If i Mod 5 = 0 Then 一行输出5个后换行PrintEnd IfNext i Close #2,9.2.3 随机文件,一 随机文件的特点:1. 所有记录等长、各数据项长度固定;2. 每个记录有唯一的记录号,读写文件按记录号操作;3. 文件以二进制代码形式存放数

19、据。,打开文件,读写,关闭文件,操作步骤:,定义记录类型,定义记录类型变量,二 记录类型(用户自定义类型) 1.声明变量类型:Type 自定义类型名元素名(下标) as 类型名(标准) 元素名(下标) as 类型名(标准)End Type如:,Type StudentXueHao As IntegerName As String*6YuWen As IntegerShuXue As IntegerEnd Type,2.声明自定义类型的变量Dim 变量名 as 自定义类型如:Dim stu1 as student3.自定义类型的变量各元素的引用:自定义变量名.元素名如:stu1.name=“张飞

20、”,三 随机文件的打开和关闭: 1. 打开Open “文件名“ For Random As #文件号 Len=记录长度2. 关闭 Close #文件号, #文件号. Close:关闭所有打开的文件。,四 随机文件的读写操作: 1.写操作Put #文件号,记录号,变量名作用:将一个记录变量的内容写入指定记录号。若忽略记录号,则写入当前记录后。例: Put #1,2,stud 在1号文件的2号记录处写stud的内容。2. 读操作Get #文件号,记录号,变量名作用:将一条指定记录的内容读入记录变量中。 若忽略记录号,则读出当前记录后的那一条记录例: Get #1,2,stud 把1号文件的2号记录

21、读取到记录型变量stud中,例9.8 设有一个记录型变量表示学生情况,包括姓名、学号和成绩三个字段。从键盘上输入若干个学生情况记录并保存在一个文件中,当输入姓名为空时结束输入。再从文件中读取出前两个学生的信息并显示在窗体中。,1、建立记录类型 Type stud xm As String * 6 xh As String * 4 score As Integer End Type,2、定义记录类型变量 Dim st1 as stud,分析:,3、如何从键盘上依次输入学生的姓名、学号、成绩并保存呢? a) 打开一个随机文件 Open App.Path + “stud1.txt” For Rand

22、om As #1 b) 用三个inputbox得到分别得到学生的姓名、学号、成绩并写入文件 st1.xm = InputBox(“请输入学生姓名:“) st1.xh = InputBox(“请输入“ & st1.xm & “的学号:“) st1.score = Val(InputBox(“请输入“ & st1.xm & “的成绩:“) Put #1,recno,st1 c)用while循环控制结束 While Trim(st1.xm) “,Private Sub Command1_Click()Dim st1 As stud 定义记录型变量studDim recno As Integer 定义

23、记录号recno = 0Open App.Path + “stud1.txt“ For Random As #1 Len = Len(st1) 打开随机文件st1.xm = InputBox(“请输入学生姓名:“)While Trim(st1.xm) “ 当输入姓名不为空时循环recno = recno + 1st1.xh = InputBox(“请输入“ & st1.xm & “的学号:“)st1.score = Val(InputBox(“请输入“ & st1.xm & “的成绩:“)Put #1,recno,st1 把记录变量stud写入文件中的第recnow个位置st1.xm = In

24、putBox(“请输入下一个学生姓名:“)WendClose #1 关闭文件 End Sub,3、如何读取前两个学生的成绩并显示在窗体中?,Private Sub Command2_Click()Dim st(1 To 2) As stud 定义记录型数组stOpen App.Path + “stud1.txt” _ For Random As #1 Len =Len(st(1)Get #1,1,st(1) 从文件中读取出1号记录变量st(1)中Print st(1).xm,st(1).xh,st(1).score 输出数据到窗体中Get #1,2,st(2) 从文件中读取出2号记录变量st(

25、2)中Print st(2).xm,st(2).xh,st(2).scoreClose #1 End Sub,9.3 常用的文件操作语句和函数,1. FileCopy语句格式:FileCopy source , destination功能:复制一个文件。说明:(1)source ,destination:源文件名和目标文件名(2) 不能复制一个已打开的文件。2. Kill语句格式:Kill pathname功能:删除文件。说明:pathname中可以使用统配符“*”和“?”。3. Name 语句格式:Name oldpathname As newpathname功能:重新命名一个文件或目录。说

26、明:(1) Name具有移动文件的功能。(2) 不能使用统配符“*”和“?”(3)不能对一个已打开的文件使用Name语句,4. MkDir 语句格式:MkDir path功能:创建一个新的目录。5. RmDir 语句格式:RmDir path功能:删除一个存在的目录。 说明:只能删除空目录。6. ChDrive 语句 格式:ChDrive drive功能:改变当前驱动器。 说明:(1)若drive为“”,则当前驱动器将不会改变;(2)若drive中有多个字 符,则只使用首字母。,7. ChDir 语句格式:ChDir path功能:改变当前目录。 8. CurDir函数格式:CurDir(drive)功能:确定任何一个驱动器的当前目录。说明:drive为“”,则CurDir返回当前驱动器的当前目录。 9. LOF函数格式:LOF(文件号)功能:返回当前文件的长度。 10. EOF函数格式:EOF(文件号)功能:文件是否已读到未尾,若到未尾返回True,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报