VB电子教材07.docx

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

VB电子教材07.docx

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

VB电子教材07.docx

VB电子教材07

第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:

盘图标,则drive1.drive的值为"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:

"

Label1.Caption="当前驱动器为:

"+Drive1.Drive

EndSub

PrivateSubDrive1_Change()

Label1.Caption="当前驱动器为:

"+Drive1.Drive

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.Path属性没有改变,可以在事件过程Dir1_Click中写入语句“Dir1.Path=Dir1.List(Dir1.ListIndex)”,则可以在选择目录的同时改变Dir1.Path属性为所选目录的路径。

在窗体的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()

Label1.Caption="当前目录:

"+Dir1.Path

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

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

List1.Clear

Fori%=0ToDir1.ListCount-1

List1.AddItemDir1.List(i%)

Nexti%

EndSub

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

\WINDOWS目录;

双击“MyDocuments”文件夹后,所选目录和Dir1.Path均改变为“c:

\MyDocuments”。

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

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

PrivateSubDir1_Click()

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

Label1.Caption="当前目录:

"+Dir1.Path

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

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

List1.Clear

Fori%=0ToDir1.ListCount-1

List1.AddItemDir1.List(I%)

Nexti%

EndSub

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

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

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

Dir1.Path=Drive1.Drive

将用户在盘驱动器列表框中选择的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

f$=Form1.File1.Path+Form1.File1.FileName

Else

f$=Form1.File1.Path+"\"+Form1.File1.FileName

EndIf

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

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

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

PrivateSubDrive1_Change()

Dir1.Path=Drive1.Drive

EndSub

PrivateSubDir1_Change()

File1.Path=Dir1.Path

EndSub

⑶Pattern属性(字符串类型)

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

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

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

例如:

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

写入语句File1.Pattern="*.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()'单击文件列表选项,加载图片

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

f$=Form1.File1.Path+Form1.File1.FileName

Else

f$=Form1.File1.Path+"\"+Form1.File1.FileName

EndIf

Image1.Picture=LoadPicture(f$)

EndSub

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

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

7.2与文件操作有关的语句

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

调用Shell函数可以执行外部的可执行文件,其扩展名如.exe、.com、.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()

CommonDialog1.Action=1

x=Shell(CommonDialog1.Filename,0)

EndSub

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

7.2.2目录和文件操作语句

改变当前盘

格式:

ChDrive<盘符>

其中:

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

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

\windows\calc.exe”(可以通过运行“开始”菜单的“查找”选项确认),下列过程打开该文件。

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中的文件vb_4.doc复制到a:

盘,并取名为vb4.doc。

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

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

删除文件

格式:

Kill<文件名>

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

\hts\vb_4.doc"”则删除d:

\hts中文件名为vb_4.doc的文件。

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

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

如执行语句“Kill"d:

\hts\*.doc"”,则删除d:

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

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

文件改名、移动

格式:

Nameas

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

\hts\aaa.txt"as"d:

\bbb.dat"”后,文件d:

\hts\aaa.txt被改名(在此亦即移动)为d:

\bbb.dat。

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

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

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

获取文件属性的函数

格式:

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

例如:

x=GetAttr("d:

\bbb.dat")

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

⑴常规属性:

0

⑵只读属性:

1

⑶隐藏属性:

2

⑷系统属性:

4

⑸文件夹:

16

⑹上次备份后已改变:

32

设置文件属性

格式:

SetAttr,Attributes

例如:

SetAttr"d:

\bbb.dat",1'设置文件d:

\bbb.dat为只读文件

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

返回文件最后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")”的输出结果为文件bb.dat的字节数。

7.3数据文件的操作

7.3.1文件的基本概念

文件、文件标识符

文件是数据信息在磁盘上的1种存

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

当前位置:首页 > 人文社科 > 教育学心理学

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

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