在VB6.0中,除了可以利用文件控件来对文件进行处理外,还可以通过一些函数和方法来处理文件,常用的文件处理函数和方法有Kill,FileCopy.RmDir,Shell和Name等。
1、 Kill 语句
Kill语句的功能是从磁盘中删除文件,它的语法结构如下:
Kill pathname
其中参数pathname是用来指定一个文件名的字符串表达式,pathname要包含文件所在的目录(文件夹)以及驱动器。
Kill支持多字符(*)和单字符(?)的统配符来指定多重文件。例如:
kill"c:/xy/*.bak"
将删除c盘xy目录下的备份文件。
Kill语句具有一定的“危险性”,因为在执行该语句时没有任何提示信息。
下面就是一个应用Kill语句设计应用程序的示例(见教材P336),它所能够实现的功能是可以显示一个对话框,在对话框中选择一个欲删除的文件,然后系统自动的完成删除的动作,具体的步骤如下:
(1)设计界面
首先在工具箱中添加一个CommonDialog控件,然后把它添加到空白的窗体上。
(2)添加代码
在程序的开始运行阶段就显示一个删除文件的对话框,为此在设计阶段双击窗体,在窗体的Form_load()事件中添加下列代码:
Private Sub Form_Load()
CommonDialog1.DialogTitle = "打开一个欲删除的文件" '设置控件的标题。
CommonDialog1.FileName = "*.doc"
CommonDialog1.Filter = "*.doc" '设置过滤器.
CommonDialog1.showopen '显示对话框。
If CommonDialog1.FileName = "*.doc" Then
Else
Kill CommonDialog1.FileName '删除选中的文件
End If
End Sub
3. 保存文件,运行程序
注意:在用Kill语句删除文件时,必须关闭该文件,否则出错。
2、 FileCopy 语句
FileCopy语句的功能是复制一个文件 ,它的语法结构如下:
FileCopy source,destination
在FileCopy语句的语法中包括两个参数,其中soure用来表示要被复制的源文件名,而destination用来指定要复制的目的文件名。
在source和destination参数中都要包含文件所在的目录或文件夹以及驱动器。
下面就是一个应用FileCopy语句实现文件复制功能的程序的示例。见教材P338。
(1)设计界面
向工具箱中添加一个Commondialog控件,并且把它放置到空白的窗体上。
根据程序功能的要求,在窗体上添加两个CommandButton控件,两个TextBox控件和两个Label控件。
(2)编写程序的初始化代码
在程序的声明中定义两个全局变量,一个用来存放源文件路径和名字,另外一个用来存储目的文件路径和名字
Dim source as string '定义一个存储源文件路径和名字的字符串变量。
Dim destination as string '定义一个存储目的文件的路径和名字的字符串变量。
(3)响应[打开]按钮的单击事件
在设计阶段双击“打开”按钮,在弹出的代码窗口中添加下列代码:
Private Sub Command1_click()
CommonDialog1.showopen '显示一个对话框
source=CommonDialog1.filename '存储源文件路径和名字的字符串变量
text1.text=source
End Sub
程序说明:程序首先通过CommonDialog1.show 语句来显示一个对话框,在其中用户可能选择要复制的源文件,然后把选中源文件的路径和文件名存储在变量soure中,同时通过Text1.text=source把源文件的路径和文件名显示在文本框中。
(4)响应[另存为]按钮的单击事件
在设计阶段双击“另存为”按钮,在它的Command2_Click() 事件中添加下列代码:
Private Sub Command2_click()
CommonDialog1.showsave '显示一个对话框
destination=CommonDialog1.Filename '存储目的文件路径和名字的字符串变量
Text2.text=destination '显示目的文件路径和值淖址淞俊?/FONT>
运行结果如图:
例2:在窗体中调用控制面板的主要设置。实现Windows属性设置的代码化。
界面:
创建命令按钮控件组。
代码:
Private Sub Command1_Click(Index As Integer)
Dim x
Select Case Index
Case 0 '启动控制面板:
x = Shell("rundll32.exe shell32.dll,Control_RunDLL")
Case 1 '启动辅助选项面板:常规:
x = Shell("rundll32.exe shell32.dll,Control_RunDLL access.cpl,,5")
Case 2 '显示:
x = Shell("rundll32.exe shell32.dll,Control_RunDLL access.cpl,,3")
Case 3 '键盘:
x = Shell("rundll32.exe shell32.dll,Control_RunDLL access.cpl,,1")
Case 4 '鼠标:
x = Shell("rundll32.exe shell32.dll,Control_RunDLL access.cpl,,4")
Case 5 '声音:
x = Shell("rundll32.exe shell32.dll,Control_RunDLL access.cpl,,2")
Case 6 '启动显示设置面板:背景:
x = Shell("rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0")
Case 7 '外观:
x = Shell("rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,2")
Case 8 '屏幕保护:
x = Shell("rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,1")
Case 9 '设置:
x = Shell("rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,3")
Case 10 '启动日期和时间设置:
x = Shell("rundll32.exe shell32.dll,Control_RunDLL timedate.cpl")
Case 11 '打开 IE4 的设置窗口:
x = Shell("rundll32.exe shell32.dll,Control_RunDLL inetcpl.cpl")
End Select
End Sub说明:本例利用了Shell函数调用Rundll32.exe文件的功能,具体调用代码为:
x = Shell("Rundll32.exe shell32.dll,Control_RunDLL")
祥见“VB启动控制面板大全”。
4、RmDir 语句
RmDir 语句的功能是删除一个存在的而且为空的目录或文件夹,它的语法结构如下所示:
Rmdir path
其中参数Path是一个字符串表达式,用来指定要删除的目录或文件夹。如果在参数Path中没有指定驱动器,则Rmdir会在当前驱动器上删除为空的目录或文件夹。
下面就是一个综合应用Kill语句和Rmdir语句的示例,它所能够实现的功能是删除一个非空的目录。见教材P344。
(1)界面设计
在窗体上添加一个DriveListBox控件,一个DirListBox控件、一个FileListBox控件和三个CommandButton控件,并设置属性。
(2)代码
响应“删除文件”按钮单击事件:
在程序的设计阶段,双击“删除文件”按钮,在它的Command2_Click()事件中添加下列代码:
Private Sub Command2_Click()
Kill File1.Path+"/"+File1.FileName '删除一个文件
End Sub
响应“删除目录”按钮事件:
在程序的设计阶段,双击“删除目录”按钮,在它的Command1_Click()事件中添加下列代码:
Private Sub Command1_Click()
Rmdir Dir1.Path '删除空的目录
End Sub
响应“退出运行”按钮事件:
private sub command3_click()
end '结束程序
end sub
驱动器、目录、文件三者同步
private sub dir1_change()
file1.path=dir1.path '及时更改文件列表框中的内容
end sub
private sub drive1_change()
dir1.path=drive1.drive '及时更改目录列表框中的内容
end sub
6.存储文件,运行程序
注意:Rmdir只能删除空的文件夹,如果要删除含有文件的文件夹,应先使用Kill语句删除该文件夹下的所有文件,再用Rmdir语句删除该文件夹,否则会出错。
5、Name语句
Name语句的功能是重新命名一个文件、目录或文件夹,也可以用来移动文件。它的语法结构如下:
Name oldpathname As newpathname
其中包括以下两个部分:
oldpathname 为字符串表达式,由它来指定已存在的文件名和位置,即原文件名,在其中包含目录或文件夹以及驱动器。
newpathname也是字符串表达,它指定新的文件名和位置,即新文件名,同样要包含目录或文件夹以及驱动器。
Name的作用说明:
移动文件
如果newpathname所指定的路径存在并且与oldpathname有不同的路径和不同的文件名,则Name语句会将文件移到新的目录文件夹,同时重新命名文件。如:
Name "c:/doc/unzip.exe" as "c:/windows/dounzip.exe "
将原文件unzip.exe从dos目录下移到windows目录下并重新命名为dounzip.exe。
如果newpathname所指定的路径存在并且与oldpathname有不同的路径和相同的文件名,那么Name会移动文件到新位置,并保持文件名不变。如:
Name "c:/doc/unzip.exe" as "c:/windows/unzip.exe "
将把unzip.exe文件从dos目录下移动到windows目录下,同时在dos目录下的unzip.exe文件被删除。
重命名目录
Name语句可以移动文件,不能移动目录,但可以对目录重命名。例如:
Name "c:/temp" as "c:/tempold"
注意:
- 当“原文件名”不存在或“新文件名”已存在时,则会发生错误。
- Name语句不能跨越驱动器移动文件。
- 如果一个文件已经打开,则用Name语句重命名时将会产生错误,所以要先关闭该文件后,才能重命名。
下面是利用Name语句来移动文件的例子。见教材P348。
(1)界面设置
向工具箱中添加一个CommonDialog控件、两个TextBox控件、两个Label控件和三个CommandButton控件。
(2)代码编写
初始化代码
Private Sub Form_load()
Command1.Enabled=False '“移动”按钮无效
End sub
响应“打开”按钮单击事件
Private Sub Command3_Click()
CommonDialog1.showopen '显示一个对话框
Text1.text=CommonDialog1.FileName '显示文件路径和文件名
Command1.Enabled=True '“移动”按钮有效
End Sub
程序说明:在程序的运行过程中,当单击“打开”按钮时,就会激活Command3_Click()事件,程序首先通过CommonDialog1.show1来显示一个"打开文件"的对话框,用户在其中选择一个有效的文件后,在文本框中就会显示出文件的路径和文件名,然后设置“移动”按钮的有效状态为Ture.
响应“移动”按钮单击事件
Private Sub Command1_click()
CommonDialog1.DialogTitlek="移动文件" '设置对话框的标题
CommonDialog1.ShowSave '显示一个对话框
Text2.text=CommonDialog1.FileName '显示文件路径和文件名
str1=MsgBox("确定移动文件到"+CommonDialog1.FileName)
if str1 then
Name Text1.Text As Text2.Text
End if
End Sub
程序说明:在程序的运行过程中,当单击“移动”按钮时,就会激活Command1_Click()事件,程序首先设置对话框的标题为"移动文件",然后CommonDialog1.Show2语句来显示一个"移动文件" 的对话框,用户在其中选择一个有效的路径和文件名后,程序就会自动的弹出一个对话框,询问用户是否真的要移动文件,如果用户确认移动,就会通过Name Text1.text as Text2.text语句来移动文件 。
FileCopy source,destination ' 复制文件
End Sub
6. 存储文件,运行程序
3、 Shell 函数
我们曾介绍了通用过程的定义及调用。实际上,在VB中,还可以调用各种应用程序,也就是说,凡能够在DOS或Windows下运行的应用程序,基本上都可在VB中调用。这一功能可通过Shell函数来实现。
它的语法结构如下:
Shell(pathname[,windowstyle])
参数说明:
pathname为所要执行的应用程序的名称及其路径和必要的参数;
windowstyle表示在程序运行时窗口的样式。其中的参数windowstyle的设置及其说明如下表:
设置值 | 常数 | 说明 |
0 | vbHide | 窗口被隐藏,且焦点会移到隐藏式窗口 |
1 | vbNormalFocus | 窗口具有焦点,且会还原到它原来的大小和位置 |
2 | vbMinimizedFocus | 窗口会以一个具有焦点的图标来显示 |
3 | vbMaximizedFocus | 窗口是一个具有焦点的最大化窗口 |
4 | vbNormalNoFocus | 窗口会被还原到最近使用的大小和位置,而当前活动的窗口仍然保持活动 |
6 | vbMinimizedNoFocus | 窗口会以一个图标来显示,而当前活动的窗口仍然保持活动 |
如果windowstyle省略,则程序是以具有焦点的最小化窗口来执行的。
Shell函数的功能是执行一个可执行文件,同时返回一个Variant(Double),如果调用成功的话,返回一个任务标识(Task ID),它是执行程序的唯一标识,若不成功,则会返回0。例如:
x=Shell(c:/winword/winword.exe",3)
该语句调用“Word for Windows”,并把ID返回给x。注意,在具体输入程序时,ID不能省略。上面的语句不能写成:
Shell(c:/winword/winword.exe",3)
必须在前面加上“x=”(可以用其它变量名)。
下面看具体的例子。
例1:见教材P343。
设计程序:
在窗体的form_load()事件中添加如下代码:
Private Sub Form_load()
Dim str1 as string '定义一个字符串变量用于存储程序执行的情况
Form1.hide '隐藏窗体
str1=Shell("c:/windows/system32/calc.exe",1) '调用c:/windows/system32/calc.exe程序,将参数windowstyle设置为1,可让程序以正常大小的窗口完成并且拥有焦点
End Sub
程序说明:程序首先定义一个字符串变量,用于存储程序执行的情况,如果运行正常,就会返回所调用应用程序的ID,否则就会返回0;,然后通过Form1.hide来隐藏窗体;最后str1=Shell("c:/pwin95/calc.exe",1)来完成对win95的计算器应用程序的调用。