“文件粉碎机”的VB程序实现
2007-08-25柏昌顺
柏昌顺
摘要:描述了文件删除的原理。“文件粉碎机”的原理及其应用,并介绍了以VB程序实现“文件粉碎机”的整个过程。
关键词:文件粉碎机VBAPI函数Dir函数
“文件粉碎机”能够将文件彻底的销毁的一种程序。其原理就是将需要销毁的文件所占用的空间使用无意义的符号重新填充一遍,然后再将文件删除,从而达到完全删除文件的目的。
1界面的设计
(1)启动VB,新建一个标准EXEDialog Control 6.0部件:从“工程”菜单中选择“部件”命令,打开“部件”对话框。然后在Microsoft Common DialogControl 6.0部件前的复选框中打勾;(3)在forml窗体上依次创建一个ListBox.一个CommonDialog,一个Pro-gressBar及五个Command控件,属性设置。设计完成后效果。
2“添加文件”功能的设计
“添加文件”命令的功能主要是利用CommonDialog控件显示“打开”对话框,将待粉碎的文件加入到列表框中。该功能的难点在于文件的多选(利用etrl或shift键的配合,一次选择多个文件),及其多选后将每个文件从返回的filename中分离出来。通常情况下CommonDialog控件是只能单选的,也就是一次只能选择一个文件。如果要实现多选,则需将commondialog控件的flags属性设置为:cdlOFNAllow-Multiselect+cdlOFNExolorer。
另外,我们还必需掌握“打开”对话框的返回值filename的格式。返回的filename是一个字符串,当仅选择一个文件时返回值是文件的完整路径和文件名;如果选择的是多个文件,则返回字符串的格式为:路径文件1文件2……文件n,路径及文件名之间以空格隔开。实现方法如下:
3“添加目录”功能的设计
“添加目录”功能主要是用来将所选择目录及其子目录里的所有文件都加入到待粉碎列表框中。“添加目录”功能也是本系统中的一个难点。在VB中虽然为我们提供了DirveListBox(驱动器列表),DirListBox(目录列表)。FileListBox(文件列表),CommonDia-log(通用对话框)等控件,这些控件用来浏览文件及文件夹或选择文件时比较好用,但要用他们来实现添加目录的功能还是比较困难的。本文使用了SHBrowseForFolder和SHGetPathFro-mlDList两个API函数来显示目录选择对话框,另外编写了一个findfih过程实现对文件夹的遍历。该过程利用VB提供的一个检测文件是否存在的函数Dir和动态数组对文件夹以广度优先的顺序进行遍历。
3.1 API函数使用说明
使用API函数需要声明DLL过程,在代码窗口的“声明”部分增加一个Declare语句。如该过程返回一个值,应将其声明为Function,格式如下:
如果过程没有返回值,可将其声明为Sub,格式如下:
3.2Dir函数使用说明
Dir函数返回一个String,用以表示一个文件名、目录名或文件夹名称,它必须与指定的模式或文件属性、或磁盘卷标相匹配。语法:Dir[(pathname[,attributes])],Dir函数的语法具有以下几个部分:
在第一次调用Dir函数时,必须指定pathname,否则会产生错误。如果也指定了文件属性,那么就必须包括pathname,Dir会返回匹配pathname的第一个文件名。若想得到其它匹配pathname的文件名,再一次调用Dir。且不要使用参数。如果已没有合乎条件的文件,则Dir会返回一个零长度字符串("")。一旦返回值为零长度字符串,并要再次调用Dir时,就必须指定pathname,否则会产生错误。不必访问到所有匹配当前pathname的文件名,就可以改变到一个新的pathname上,但不能以递归方式来调用Dir函数。以vbDirectory属性来调用Dir不能连续返回子目录。
3.3实现代码如下
List1.RemoveItem List 1.ListIndex
End Sub
6结束语
通过“文件粉碎机”的学习,读者能更深该地理解文件在计算机里的存在形式,对大家将来在重要电子文件的管理中有一定的指导意义。本人在开发过程中也对VB的文件处理有了更深的理解,特别是对API函数,它能实现许多我们意想不到的效果。