VB电子教材.docx

上传人:b****0 文档编号:12729232 上传时间:2023-04-21 格式:DOCX 页数:50 大小:225.87KB
下载 相关 举报
VB电子教材.docx_第1页
第1页 / 共50页
VB电子教材.docx_第2页
第2页 / 共50页
VB电子教材.docx_第3页
第3页 / 共50页
VB电子教材.docx_第4页
第4页 / 共50页
VB电子教材.docx_第5页
第5页 / 共50页
点击查看更多>>
下载资源
资源描述

VB电子教材.docx

《VB电子教材.docx》由会员分享,可在线阅读,更多相关《VB电子教材.docx(50页珍藏版)》请在冰豆网上搜索。

VB电子教材.docx

VB电子教材

第7章文件

通过前几章的学习,使我们了解,利用VB可以编写一些用于科学计算、图形处理等方面的程序。

不仅如此,VB还广泛地应用于编制如人事、财务、生产、教学等各方面的管理程序,在这类应用中,通常需要处理大量不同类型的数据信息,而这些数据信息常常需要独立存储在某种介质上〔如磁盘等〕,以便需要时通过程序来加工处理,这种独立存储的数据集合就称为文件。

因此,掌握文件的概念及其使用方法是VB程序设计的重要内容之一。

7.1与文件操作有关的控件

在Windows应用程序中翻开文件或保存文件时,通常需要翻开一个对话框,用于选择文件所在的驱动器〔盘〕、文件夹〔目录〕、文件名。

在VB中,使用盘驱动器列表框〔DriveListBox〕、目录路径列表框〔DirListBox〕以及文件列表框〔FileListBox〕这3种控件的组合,可以创立类似Windows资源管理器的文件操作对话框,用于选择文件。

7.1.1盘驱动器列表框控件

盘驱动器列表框控件用于显示驱动器列表,工具箱中该控件图标为。

该控件缺省的名称为:

Drive1、Drive2、……

⒈盘驱动器列表框控件常用属性

⑴Drive属性〔字符串类型〕

用来设置当前驱动器或返回所选择的驱动器名。

Drive属性只能在程序运行时赋值,而不能通过属性窗口设置。

为驱动器列表框的Drive属性赋值的语句格式为:

<盘驱动器列表框名>.Drive[=驱动器名]

格式中的“驱动器名〞为指定的驱动器,也就是说使该驱动器成为当前驱动器;如果省略,那么不改变当前驱动器。

如果所指定的驱动器在系统中不存在,那么产生错误。

程序运行时假设选择驱动器,那么Drive属性值改写为所选择的驱动器名。

如运行时单击驱动器列表框控件drive1中D:

盘图标,那么dr的值为"d:

"。

值得注意的是:

盘驱动器列表框中显示的驱动器名都是由系统自动生成的,用户只能通过列表框选择使用,不可以对Drive控件使用AddItem、RemoveItem等方法添加或删除列表项。

⑵List属性〔字符串数组〕

List数组的每一个元素中的字符串,为1个驱动器名,数组下标从0开始。

⑶ListCount属性〔正整数〕

ListCount属性值表示系统中盘驱动器的个数。

假设系统有驱动器a:

、c:

、d:

、e:

、f:

〔光驱〕,那么驱动器列表框控件drive1的ListCount属性值为5,执行以下语句后在窗体上输出的结果为“a:

c:

d:

e:

f:

〞。

Fori%=0ToDrive1.ListCount-1

PrintDrive1.List(i%);

Nexti%

⒉盘驱动器列表框控件常用事件

运行时,当单击驱动器列表框中某一驱动器图标时,该驱动器的名就赋值给控件的Drive属性,同时引发Change事件。

例7-1在窗体上设计一个盘驱动器列表框Drive1、一个标签Label1。

当程序启动时,设置当前驱动器为C盘;选择盘驱动器列表框中的盘符,在标签上显示相应的当前驱动器信息。

在窗体的Load事件中设置Drive属性的初值、编制事件过程Drive1_Change如下:

PrivateSubForm_Load()

Drive1.Drive="c:

"

EndSub

PrivateSubDrive1_Change()

EndSub

界面设计和程序运行的情况分别如图7-1a和图7-1b所示。

图7-1a例7-1之界面设计图7-1b例7-1之运行情况

7.1.2目录路径列表框控件

目录路径列表框控件在工具箱中的图标为。

目录路径列表框控件用于显示当前驱动器中文件夹〔目录〕列表。

如图7-2所示。

其中,突出显示的为当前目录。

目录路径列表框控件缺省的控件名称为:

Dir1、Dir2、……

⒈目录路径列表框控件常用属性

⑴Path属性〔字符串类型〕

Path属性值为当前目录或所选择的目录名。

如果选中盘x的根目录,那么Path属性为"x:

\";如果选中盘x的某一个子目录y〔文件夹〕,那么Path属性为"x:

\y"。

请注意,Path属性值的最后一个字符是否为"\",取决于是否选中根目录。

同Drive属性一样,Path属性只能用程序代码设置,而不能在设计时通过属性窗口设置。

为目录列表框的Path属性赋值的语句格式为:

<目录路径列表框名>.Path[=目录路径名]

图7-2文件夹〔目录〕列表

运行时单击目录列表框中某一文件夹〔目录〕图标时,该目录被突出显示,表示被选中。

选中目录那么改变目录列表框的ListIndex属性,但是没有改变其Path属性,假设要改变Path属性值为所选中的目录路径,应当执行语句:

<目录路径列表框名>.Path=<目录路径列表框名>.List(<目录路径列表框名>.ListIndex)

⑵List属性〔字符串数组〕

List(0)、List

(1)、...、List(ListCount-1)中的字符串为目录路径列表框中所选目录下所有的目录名,该数组由系统自动生成。

⑶ListCount属性〔正整数〕

ListCount属性值为List数组中的元素个数,即所选目录之下1级目录的数量。

如在图7-2中,假设VB98目录下的子目录已全部显示,那么Dir1.ListCount属性值为5。

假设执行语句:

Fori%=0ToDir1.ListCount-1

PrintDir1.List(i%)

Nexti%

窗体上输出结果为:

c:

\ProgramFile\MicrosoftVisualStudio\VB98\Setup

c:

\ProgramFile\MicrosoftVisualStudio\VB98\Template

c:

\ProgramFile\MicrosoftVisualStudio\VB98\Tsql

c:

\ProgramFile\MicrosoftVisualStudio\VB98\Wizards

c:

\ProgramFile\MicrosoftVisualStudio\VB98\新文件夹

⑷ListIndex属性〔整数〕

该属性取值范围为-n~ListCount-1,当前目录所对应的ListIndex属性值为-1,当前目录的上1级目录所对应的ListIndex属性值为-2,其中的n反映了当前目录在目录层次中的深度。

Path属性值也可以通过在事件过程的程序代码中重新定义Dir控件的ListIndex属性来选择设置:

Dir1.ListIndex=2选当前目录下1级目录中的第3个目录为当前目录〔文件夹〕

Dir1.ListIndex=0选当前目录下1级目录中的第1个目录为当前目录。

Dir1.ListIndex=-2选当前目录上1级目录为当前目录。

Dir1.ListIndex=-3选当前目录上2级目录为当前目录。

假设要改变的当前目录不存在,那么显示出错信息。

如在图7-2中,假定当前所选文件夹是VB98:

执行语句“Dir1.ListIndex=2〞后文件夹Tsql被突出显示;

执行语句“Dir1.ListIndex=0〞后文件夹Setup被突出显示;

执行语句“Dir1.ListIndex=-3〞后文件夹ProgramFiles被突出显示,等等。

⒉目录路径列表框控件常用事件

⑴Change事件

每次重新设置或选择改变目录路径列表框的Path属性时,都将引发Change事件。

运行时双击目录路径列表框的列表选项,可改变Path属性值为当前目录名,并执行Change事件。

⑵Click事件

单击选中目录路径列表框控件Dir1的某个目录名,那么选中该目录,但属性没有改变,可以在事件过程Dir1_Click中写入语句“Dir1.Path=Dir1.List(Dir1.ListIndex)〞,那么可以在选择目录的同时改变D属性为所选目录的路径。

在窗体的Load事件中可以设置Path属性的初值。

例7-2目录路径列表框例如。

⑴界面设计:

在窗体上建立目录路径列表框控件Dir1、三个标签控件〔Label1、Label2、Label3〕以及一个列表框控件List1。

程序启动时,设置初始当前目录为"C:

\WINDOWS";

程序运行后,通过鼠标双击Dir1中的列表选项,改变当前目录,同时在三个标签控件上分别显示当前目录、当前ListIndex和ListCount的值,在List1中显示当前目录的所有下一级目录的目录路径信息。

程序的运行情况如图7-3所示。

图7-3双击“MyDocuments〞文件夹后的显示

⑵过程设计

编写Form_Load和Dir1_Change事件过程如下:

PrivateSubForm_Load()

'设置Dir1控件的初始路径

Dir1.Path="C:

\WINDOWS"

EndSub

'双击控件Dir1时执行以下事件过程Dir1_Change

PrivateSubDir1_Change()

Label2.Caption="ListIndex="+Str(Dir1.ListIndex)

Label3.Caption="ListCount="+Str(Dir1.ListCount)

Fori%=0ToDir1.ListCount-1

List1.AddItemDir1.List(i%)

Nexti%

EndSub

在双击Dir1前,目录列表框中突出显示的是C:

\WINDOWS目录;

双击“MyDocuments〞文件夹后,所选目录和D均改变为“c:

\MyDocuments〞。

将以下Click事件过程与上述过程Dir1_Change相比拟,可知要实现同样的功能,其中的语句“Dir1.Path=Dir1.List(Dir1.ListIndex)〞是必不可少的。

'单击控件Dir1时执行该事件过程

PrivateSubDir1_Click()

Dir1.Path=Dir1.List(Dir1.ListIndex)

Label1.Caption="当前目录:

"+D

Label2.Caption="ListIndex="+Str(Dir1.ListIndex)

Label3.Caption="ListCount="+Str(Dir1.ListCount)

Fori%=0ToDir1.ListCount-1

List1.AddItemDir1.List(I%)

Nexti%

EndSub

在实际应用中,目录路径列表框Dir1与盘驱动器列表框Drive1有着紧密的关系。

一般情况下,改变盘驱动器列表框中的驱动器名后,目录路径列表框中的目录也要随之改变为该驱动器上的目录。

要实现这样的同步变化,可以在盘驱动器列表框的Change事件中设置如下命令:

将用户在盘驱动器列表框中选择的Drive属性,改写目录列表框中的Path属性,使目录列表框中显示所选驱动器下的目录。

7.1.3文件列表框控件

文件列表框控件用于显示当前目录中的文件列表,该控件图标为。

文件列表框控件缺省的控件名称为:

File1、File2、……

⒈文件列表框控件常用属性

⑴Path属性〔字符串类型〕

同目录路径列表框的Path属性一样,用以设置当前文件列表框内所显示文件的存储路径。

仅在运行时读写,不能在属性窗口中设置。

文件列表框总是显示Path所指示的文件夹中的文件。

假设在Form_Load事件中写入语句“File1.Path="C:

\Windows"〞,那么窗体装入后File1显示文件夹C:

\Windows中的文件列表。

⑵Filename属性〔字符串类型〕

用以设置或返回所选文件的文件名,不能在属性窗口中设置,运行时假设在文件列表框中选择文件将改写Filename属性值。

所选文件的全名f$为:

IfRight(File1.Path,1)="\"Then

Else

EndIf

在第6章中介绍的通用对话框控件也有同名的FileName属性,请读者注意两者的区别。

同样,在实际应用中,文件列表框也要随着目录路径列表框的改变而变化。

在程序中创立三个控件Drive1、Dir1、File1,并编制以下事件过程,那么程序运行时对这些列表框所作选择可以起到调用通用〔文件〕对话框的作用。

PrivateSubDrive1_Change()

EndSub

PrivateSubDir1_Change()

EndSub

⑶Pattern属性〔字符串类型〕

用以设置文件列表框中文件的显示模式,缺省值为“*.*〞。

此属性可以在属性窗口中设置,也可以在程序中通过赋值设置。

字符串中为假设干个用分号间隔的文件名,在文件名中可以含有通配符。

例如:

在Form_load事件中写入语句rn="*.exe",使File1列表框中只显示所有扩展名为EXE的文件;

写入语句rn="*.dat;a*.*",使File1列表框中只显示所有扩展名为DAT以及文件名首字符为a的文件,等等。

⒉文件列表框控件常用事件

与盘驱动器列表框和目录路径列表框不同的是:

文件列表框能支持PathChange和PatternChange事件,但不能响应Change事件。

⑴PathChange事件

当改变了文件列表框的文件显示路径时,引发PathChange事件。

⑵PatternChange事件

当改变了文件列表框的文件显示模式,即Pattern属性值的改变将引发PatternChange事件。

例7-3在窗体上建立一个盘驱动器列表框Drive1、目录路径列表框Dir1、文件列表框File1、影像框Image1,运行时选择File1中所列的图片文件,那么相应图片显示在影像框Image1中。

⑴界面设计,如图7-4所示。

图7-4例7-3之界面设计

⑵过程设计

PrivateSubForm_Load()

Drive1.Drive="c:

\"'设置Drive1的初始盘符

File1.Pattern="*.bmp;*.pif"'设置File1的文件显示模式

EndSub

PrivateSubDrive1_Change()

Dir1.Path=Drive1.Drive'使Dir1与Drive1同步改变

EndSub

PrivateSubDir1_Change()

File1.Path=Dir1.Path'File1与Dir1同步改变

EndSub

PrivateSubFile1_Click()'单击文件列表选项,加载图片

th,1)="\"Then

Else

EndIf

Image1.Picture=LoadPicture(f$)

EndSub

程序运行的情况如图7-5所示。

图7-5例7-3之运行情况

7.2与文件操作有关的语句

7.2.1直接调用外部可执行文件的Shell方法

调用Shell函数可以执行外部的可执行文件,其扩展名如.exe、、.bat或.pif,缺省扩展名为.exe。

不能执行操作系统的内部命令及所有非执行文件〔如文档〕,否那么将显示出错信息。

调用shell函数的格式:

CallShell([,Windows_style])

或<变量名>=Shell(Filename,Windows_style)

其中:

Filename为字符串,是所调用可执行文件的全名。

Windows_style参数用于规定当前窗口与被调用文件窗口的不同状态。

其值为0、1、2、3、4、6的表达式。

函数返回值在Windows9x中无意义,但必须书写,因此格式中的“变量名〞是无用但又是必须的。

例7-4将例7-3工程生成为exe文件,保存在D:

盘根目录下,并取名为Tupian,那么可用以下方式调用该工程。

PrivateSubCommand1_Click()

x=Shell("d:

\tupian.exe",0)

EndSub

例7-5在窗体上添加通用对话框控件Commondialog1、单击命令按钮Command1,翻开文件对话框选择扩展名为EXE的文件执行。

⑴界面设计,如图7-6a所示:

图7-6a例7-5之界面设计图7-6b例7-5之运行情况

⑵过程设计

PrivateSubCommand1_Click()

=1

lename,0)

EndSub

假设运行时在文件对话框中选择windows中“计算器〞文件“〞,那么该程序被调用,如图7-6b所示,关闭计算器窗口后,控制返回到VB应用程序界面。

7.2.2目录和文件操作语句

⒈改变当前盘

格式:

ChDrive<盘符>

其中:

<盘符>为字符串,即驱动器名。

例7-6确认的准确位置如“c:

\windows〞〔可以通过运行“开始〞菜单的“查找〞选项确认〕,以下过程翻开该文件。

PrivateSubCommand1_Click()

ChDrive"c:

"'改变c:

盘为当前盘

y=Shell("\windows\calc.exe",0)'省略盘符,指当前盘

EndSub

⒉创立文件夹

格式:

MKDir<文件夹名>

例7-7〔先建立1个目录路径列表框以便观察〕执行以下事件过程。

PrivateSubcommand1_click()

MKdir"c:

\aaa"'建立文件夹c:

\aaa

MkDir"c:

\aaa\bbb"'建立文件夹c:

\aaa\bbb

EndSub

如果要创立的文件夹已经存在、或所指出的路径是错误的,那么执行该过程将产生错误信息。

如上面的两条命令如交换次序,那么出现错误,因为在建立文件夹bbb时,所指出的路径c:

\aaa还不存在。

⒊删除文件夹

格式:

RMDir<文件夹名>

例7-8〔在运行例7-7程序的根底上〕执行以下事件过程。

PrivateSubCommand1_Click()

RMdir"c:

\aaa\bbb"'删除文件夹c:

\aaa\bbb

RMDir"c:

\aaa"'删除文件夹c:

\aaa,如果与上1句交换位置将出错。

EndSub

如果要删除的文件夹不存在,或是该文件夹下面还有文件、文件夹存在,那么该语句将产生错误信息。

⒋改变当前目录

格式:

CHDir

例如,执行语句“CHdir"c:

\vb6"〞,即把c:

\vb6设置为当前目录。

如果要改变的目录不存在,那么该语句将产生错误信息。

此外,还有返回当前目录的CurDir函数,其格式为:

CurDir[(盘符)]

例如:

ChDrive"d:

"'改变d:

盘为当前盘。

ChDir"\hts"'改变默认盘的当前目录为d:

\hts〞。

PrintCurDir'函数CurDir返回值为字符串"d:

\hts"。

⒌复制文件

格式:

FileCopy<源文件名>,<目标文件名>

例如,执行语句“FileCopy"d:

\hts\vb_4.doc","a:

\vb4.doc"〞,可将d:

\hts中的文件复制到a:

盘,并取名为。

⑴文件名中,缺省盘符指当前盘;缺省路径指当前目录。

⑵文件名中,不可以缺省文件主名、不可使用通配符。

⒍删除文件

格式:

Kill<文件名>

例如,执行语句“Kill"d:

\hts\vb_4.doc"〞那么删除d:

\hts中文件名为的文件。

⑴文件名中,缺省盘符指当前盘;缺省路径指当前目录。

⑵文件名中可使用通配符,以删除一批文件。

如执行语句“Kill"d:

\hts\*.doc"〞,那么删除d:

\hts中所有的扩展名为doc的文件。

⑶如果需要删除的文件未找到,系统显示出错信息。

⒎文件改名、移动

格式:

Nameas

例如,执行语句“Name"d:

\hts\aaa.txt"as"d:

\bbb.dat"〞后,文件被改名〔在此亦即移动〕为。

缺省盘符为当前盘、缺省路径为当前目录。

如果指定的目录、文件不存在,那么该语句将产生错误信息。

如果新文件名与原文件的路径和文件名都不同,那么做移动且改名操作。

⒏获取文件属性的函数

格式:

GetAttr()函数的返回值是一个整数

例如:

x=GetAttr("d:

\bbb.dat")

函数的返回值与对应文件属性值分别如下:

⑴常规属性:

0

⑵只读属性:

1

⑶隐藏属性:

2

⑷系统属性:

4

⑸文件夹:

16

⑹上次备份后已改变:

32

⒐设置文件属性

格式:

SetAttr,Attributes

例如:

SetAttr"d:

\bbb.dat",1'设置文件为只读文件

SetAttr"aaa.txt",2'设置缺省目录下的文件为隐藏文件

⒑返回文件最后1次修改的日期和时间的函数

格式:

FileDateTime()返回值为字符串

例如,执行语句“dt$=FileDateTime("d:

\bbb.dat")〞后,如dt$中的字符串为“00-5-23PM4:

18:

26〞,说明该文件最后1次修改的日期和时间是2000年5月23日下午4点18分26秒。

⒒检测文件长度的函数

格式:

FileLen()返回数值表示文件的字节数

例如,执行语句“PrintFilelen("d:

\bb.dat")〞的输出结果为文件的字节数。

7.3数据文件的操作

7.3.1文件的根本概念

⒈文件、文件标识符

文件是数据信息在磁盘上的1种存储结构。

计算机系统中的不同文件以不同的文件标识符区分,文件标识符即文件全名,包括存储路径、主名、扩展名3局部组成。

在使用顺序文件时应注意以下几点:

•顺序文件在翻开时必须指定对文件的操作方式〔Input、Output、Append〕,翻开后只能对文件按指定的方式进行操作。

每翻开一次文件,只能进行单一的一种操作。

•顺序文件以Output方式翻开后,总是从文件的开头写,使用这种方式翻开一个已经存在的文件,磁盘上的原有同名文件将被覆盖、其中的数据将会丧失;

•顺序文件以Append方式翻开后,总是从文件的末尾写,磁盘上的原有同名文件中的数据仍然存在;

•顺序文件以Input方式翻开后,总是从文件的开头读文件,即使需要的是最后一行内容也必须如此。

⒉文件的存储格式

按文件的存储格式,可以把文件分为以下几种。

⑴ASCII〔字符、正文〕文件:

按字符的ASCII码存储,每个字符占1个字节。

⑵二进制文件,按数据的机内码存储,每个数据所占存储空间为该类型数据的字节数。

3.文件的存取方式

按文件的存取方式,可以把文件分为以下几种。

⑴顺序文件:

必须在顺序访问文件中某个数据前〔物理位置〕的所有数据后,才可以访问该数据。

⑵随机文件:

可以直接访问文件中的任何1个数据。

ASCII文件中的数据进入内存要转换为二进制形式,计算机处理的效率不如二进制文

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

当前位置:首页 > 求职职场 > 职业规划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1