第八章数据文件.ppt
《第八章数据文件.ppt》由会员分享,可在线阅读,更多相关《第八章数据文件.ppt(27页珍藏版)》请在冰豆网上搜索。
VisualBasic程序设计10/27/2022第八章第八章数据文件数据文件8.18.1文件系统控件文件系统控件8.28.2文件概述文件概述8.38.3顺序文件顺序文件8.48.4随机文件随机文件8.58.5二进制文件二进制文件8.68.6常用文件操作语句和函数常用文件操作语句和函数VisualBasic程序设计10/27/20221.驱动器列表框驱动器列表框Drive属性属性:
包含当前选定的驱动器名,只能在运行时设置。
:
包含当前选定的驱动器名,只能在运行时设置。
对象对象.Drive=driveChange事件事件:
选择一个新的驱动器或通过代码重新设置:
选择一个新的驱动器或通过代码重新设置Drive属性属性引发引发Change事件。
事件。
2.目录列表框目录列表框Path属性属性:
包含当前路径,只能在运行时设置。
:
包含当前路径,只能在运行时设置。
对象对象.Path=pathnameChange事件事件:
双击一个新的目录或通过代码重新设置:
双击一个新的目录或通过代码重新设置Path属性引属性引发发Change事件。
事件。
Click事件事件:
单击目录列表框时发生。
:
单击目录列表框时发生。
8.1驱动器、目录和文件列表框驱动器、目录和文件列表框VisualBasic程序设计10/27/20223.文件列表框文件列表框Path属性属性:
显示当前驱动器或指定驱动器上的目录结构,:
显示当前驱动器或指定驱动器上的目录结构,即显示该路径下的所有文件。
即显示该路径下的所有文件。
重新设置重新设置Path属性引发属性引发PathChange事件。
事件。
Pattern属性属性:
决定显示的文件类型。
:
决定显示的文件类型。
对象对象.Pattern=value重新设置重新设置Pattern属性引发属性引发PatternChange事件。
事件。
例如:
例如:
file1.Pattern=*.frm,显示,显示*.frm文件。
文件。
多个文件类型用分号分界。
例如:
多个文件类型用分号分界。
例如:
*.frm;*.frxFileName属性属性:
包含选定的文件名:
包含选定的文件名对象对象.FileName=pathname引用时只返回文件名,相当于引用时只返回文件名,相当于File1.List(File1.ListIndex),需,需用用Path属性得到其路径;设置时可带路径。
属性得到其路径;设置时可带路径。
VisualBasic程序设计10/27/2022Click、DblClick事件事件:
例如,单击输出文件名。
例如,单击输出文件名。
SubFile1_Click()MsgBoxFile1.FileNameEndSub例如,双击执行可执行程序:
例如,双击执行可执行程序:
SubFile1_DblClick()RetVal=Shell(File1.Path+”+File1.FileName,1)执行程序执行程序EndSub例例8.0示例程序示例程序文件管理系统。
当用户在文件列表框中单击文文件管理系统。
当用户在文件列表框中单击文件名时输出该文件名;双击某可执行文件时,可以运行该程件名时输出该文件名;双击某可执行文件时,可以运行该程序。
序。
VisualBasic程序设计10/27/20228.2文件概述文件概述文件:
存储在外存储器上的用文件名标识的数据的集合。
文件:
存储在外存储器上的用文件名标识的数据的集合。
8.2.1文件分类文件分类1.按文件内容分类按文件内容分类程序文件:
包括源程序和可执行程序。
程序文件:
包括源程序和可执行程序。
数据文件:
程序运行所需要的各种数据。
数据文件:
程序运行所需要的各种数据。
2.按存储信息的形式分类按存储信息的形式分类ASCII文件:
存放各种数据的文件:
存放各种数据的ASCII代码,可用记事本打开。
代码,可用记事本打开。
二进制文件:
存放的是数据的二进制代码,用专用程序打开。
二进制文件:
存放的是数据的二进制代码,用专用程序打开。
3.按访问模式分类按访问模式分类顺序文件、随机文件和二进制文件。
顺序文件、随机文件和二进制文件。
VisualBasic程序设计10/27/2022
(1)
(1)顺序文件顺序文件按顺序依次把记录写入文件;按顺序依次把记录读出来。
按顺序依次把记录写入文件;按顺序依次把记录读出来。
优点:
结构简单、访问模式简单优点:
结构简单、访问模式简单缺点:
必须按顺序访问缺点:
必须按顺序访问在在VBVB中,顺序文件就是文本文件中,顺序文件就是文本文件文本文件:
一行一条记录,记录可长可短,以文本文件:
一行一条记录,记录可长可短,以“换行换行”字符字符为分隔符号。
为分隔符号。
VisualBasic程序设计10/27/2022
(2)随机文件随机文件随机文件可以直接访问文件中的任意一个记录。
随机文件可以直接访问文件中的任意一个记录。
记录长度相同;记录长度相同;根据记录号访问;存取速度快。
根据记录号访问;存取速度快。
(3)二进制文件二进制文件直接把二进制码存放在文件中。
以字节为单位访问。
直接把二进制码存放在文件中。
以字节为单位访问。
VisualBasic程序设计10/27/20228.2.2文件读文件读/写写1.打开文件打开文件文件缓冲区:
文件缓冲区:
打开文件时,系统为文件开辟专门的数据存储区域。
打开文件时,系统为文件开辟专门的数据存储区域。
文件号:
文件号:
每个文件缓冲区都有一个编号。
文件号就代表文件,对文件的操作每个文件缓冲区都有一个编号。
文件号就代表文件,对文件的操作都是通过文件号进行的。
可以由程序员指定,也可以由都是通过文件号进行的。
可以由程序员指定,也可以由FreeFile函数获得。
函数获得。
2.读写操作读写操作读操作:
读操作:
将数据从文件读入到变量(外存到内存)(输入)。
将数据从文件读入到变量(外存到内存)(输入)。
写操作:
写操作:
将数据从变量写入到文件(内存到外存)(输出)。
将数据从变量写入到文件(内存到外存)(输出)。
读写操作都要先经文件缓冲区,然后再提交给变量或文件。
读写操作都要先经文件缓冲区,然后再提交给变量或文件。
3.关闭文件关闭文件避免数据丢失情况发生。
避免数据丢失情况发生。
VisualBasic程序设计10/27/20228.3顺序文件顺序文件8.3.1引例引例例例8.1编写程序,要求是:
编写程序,要求是:
(1)将两个学生的学号、姓名和成绩写入文件将两个学生的学号、姓名和成绩写入文件C:
Scores.dat。
(2)按原有的数据类型从文件按原有的数据类型从文件C:
Scores.dat中读出数据,计算中读出数据,计算平均成绩并显示在窗体上。
平均成绩并显示在窗体上。
(3)根据文本文件的行结构特性,按行从文件根据文本文件的行结构特性,按行从文件C:
Scores.dat中中读出数据并显示在窗体上。
读出数据并显示在窗体上。
分析:
分析:
(1)对文件操作首先打开文件,用对文件操作首先打开文件,用Open语句;语句;
(2)对文件进行读写操作可以使用对文件进行读写操作可以使用VB提供的读写语句。
提供的读写语句。
VisualBasic程序设计10/27/20228.3.2常用语句和函数常用语句和函数1.打开文件打开文件Open文件名文件名For模式模式As#文件号文件号
(1)文件名文件名字符串常量或字符型变量字符串常量或字符型变量
(2)模式模式OUTPUT:
写操作;:
写操作;INPUT:
读操作;:
读操作;APPEND:
追加到文件末尾。
:
追加到文件末尾。
(3)文件号文件号1511,可以用,可以用FreeFile函数获得下一个可利用的文件号。
函数获得下一个可利用的文件号。
例例如,打开如,打开C:
VBSCORE,供写入数据,指定文件号为,供写入数据,指定文件号为#1。
OPENC:
VBSCOREFOROUTPUTAS#1VisualBasic程序设计10/27/20222.写入命令写入命令
(1)Print#文件号,文件号,输出列表输出列表其中,输出列表的格式与其中,输出列表的格式与Print方法完全一样。
方法完全一样。
例如:
保存文本框的内容例如:
保存文本框的内容假定文本框的名称为假定文本框的名称为Text1,文件名为,文件名为TEST.Doc。
方法方法1:
把整个文本框的内容一次性地写入文件。
:
把整个文本框的内容一次性地写入文件。
Open“c:
TEST.docForOutputAs#1Print#1,Text1Close#1方法方法2:
把整个文本框的内容一个字符一个字符地写入文件。
:
把整个文本框的内容一个字符一个字符地写入文件。
Open“c:
TEST.docForOutputAs#1Fori=1Tolen(Text1)Print#1,Mid(Text1,i,1);NextiClose#1VisualBasic程序设计10/27/2022
(2)Write#文件号,文件号,输出列表输出列表紧凑格式,数据项之间插入紧凑格式,数据项之间插入“,”,字符数据加上双引,字符数据加上双引号。
号。
例如,命令:
例如,命令:
Write#1,One,Two,123内容:
内容:
One,Two,123若是若是print#1,“One”,“Two”,123则结果:
则结果:
OneTwo123例例8.2利用利用Print和和Write语句把数据写入文件语句把数据写入文件3.关闭文件关闭文件Close#文件号文件号,#文件号文件号.例如:
例如:
Close#1,#2,#3CloseVisualBasic程序设计10/27/20224.4.读顺序文件读顺序文件INPUTINPUT#文件号文件号,变量列表变量列表把读出的每个数据项分别存放到所对应的变量。
把读出的每个数据项分别存放到所对应的变量。
LINEINPUTLINEINPUT#文件号文件号,字符串变量字符串变量读一行到变量中,但读出的数据不包含回车换行符,主要读一行到变量中,但读出的数据不包含回车换行符,主要用来读取文本文件。
用来读取文本文件。
INPUT$INPUT$(读取字符数读取字符数,#,#文件号文件号)随意读取指定数目字符。
随意读取指定数目字符。
5.5.函数函数LOFLOF(文件号文件号):
返回文件的长度:
返回文件的长度(总字节数总字节数)。
EOFEOF(文件号文件号):
返回文件指针是否到末尾的值。
指针在文:
返回文件指针是否到末尾的值。
指针在文件尾时,件尾时,EOFEOF函数为函数为TrueTrue,否则为,否则为FalseFalse。
VisualBasic程序设计10/27/2022例如:
读文本文件的内容到文本框例如:
读文本文件的内容到文本框假定文本框名称为假定文本框名称为Text1,文件名为,文件名为MYFILE.TXT。
方法方法一:
一行一行地读一:
一行一行地读Text1.Text=OpenMYFILE.TXTForInputAs#1DoWhileNotEOF
(1)LineInput#1,InputDataText1=Text1+InputData+vbCrLfLoopClose#1VisualBasic程序设计10/27/2022方法方法2:
一个字符一个字符地读:
一个字符一个字符地读DimInputDataasString*1Text1.Text=OpenMYFILE.TXTForInputAs#1DoWhileNotEOF
(1)InputData=Input$(1,#1)Text1.Text=Text1.Text+InputDataLoopClose#1VisualBasic程序设计10/27/2022例例8.4编写顺序文件读写程序。
编写顺序文件读写程序。
u单击单击“添加数据添加数据”,则将一个学生的学号、姓名和成绩添加,则将一个学生的学号、姓名和成绩添加到到Score.txt文件中文件中u单击单击“读取数据读取数据”,则从文件读取数据并计算总分和平均成,则从文件读取数据并计算总分和平均成绩,最后送入文本框