丁志云
摘要:该文主要研究在VB中如何遍历指定文件夹中所有文件的方法,一共列举出三种不同的方法,并比较它们的优缺点,为应用程序中访问文件提供支持。
关键词:遍历文件;API;VB;FSO
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2018)29-0100-02
Abstract: This paper mainly studies how to traverse all the files in the specified folder in VB, lists three different methods, and compares their advantages and disadvantages to provide support for accessing files in applications.
Key words: Ergodic file;API;VB;FSO
随着信息技术和网络技术的高速发展,计算机已经彻底改变了人们的生活方式,当今社会各行各业已经逐步实现了网络化、信息化管理,各种应用系统如雨后春笋般的蓬勃发展。在这些系统中一般都免不了对文件进行操作与管理。在文件操作中,最基本的是浏览文件,列出文件清单。本文探索在VB6.0环境下三种遍历文件的方法并比较它们的优缺点。
1使用FSO對象模型遍历文件
1.1 FSO简介
FSO(文件系统对象)全称为FileSystemObject,它提供了在Windows中操作本地文件(夹)的功能,FSO对象模型简单易用,在许多高级语言中都被支持。
FSO对象模型可以实现文件(夹)的创建、改变、移动和删除等常见操作,也可以获取文件(夹)的名称、大小、属性、创建日期或最近修改日期等信息,还可以检测文件(夹)是否存在。通过FSO对象模型也可以获取当前系统驱动器信息,如驱动器的种类(硬盘、CD-ROM还是可移动磁盘)、磁盘剩余空间等等。
1.2 FSO的常见对象
FSO的常见对象见表1。
每一个对象都有诸多属性,这里不一一列出,读取可以查看相关资料及帮助。
1.3 FSO的创建
由于FSO对象包含在Scripting类型库(Scrrun.dll)中,所以在使用前首先需要在工程中引用这个文件,在VB中,单击“工程”→“引用”,然后在“引用”对话框中选中“Microsoft Scripting Runtime”前的复选框,单击“确定”即可。
2使用Windows API函数遍历文件
2.1 API函数简介
API(应用程序编程接口),全称是Application Programming Interface,是一些预先定义的底层函数,是系统提供给用户用于进入操作系统核心,进行高级编程的途径。
API函数包含在Windows系统目录下的动态连接库文件(*.dll)中。Windows API是一系列用来控制Windows的各个部件的外观和行为的函数。
在VB中应用API函数实现某一功能必须在VB的窗体模块或标准模块中先声明相应的API函数,在声明了API函数之后,调用它的方法与调用VB自己的成员函数相同。
2.2 API函数的常见动态连接库
API函数集是由操作系统或开发环境提供的,以DLL动态连接库的形式出现,每一个动态连接库文件中包含几十个甚至上百个API函数。常见的动态连接库及功能如表2所示。
当然了,这只是主要的三个动态连接库,其他比较常用的还有网络服务(Winsock32.dll)、多媒体服务(Winmm.dll)等等。
2.3遍历文件的API函数
遍历文件过程中用到的API函数主要有FindFirstFile、FindNextFile、FindClose三个,在VB中声明如下。
4三种方法比较
1)第1种方法和第2种方法需要借助第三方DLL文件,而第3种方法使用VB本身提供的成员函数即可完成文件遍历。
2)第1种方法简单易用,但文件名中不支持通配符*和?,如果要列出符合某一条件的文件名,需要在找到后进一步编程实现,处理起来不方便,而第2种方法和第3种文件名中支持使用通配符*和?,对查找某一类文件这样的要求比较适合。
3)第1种方法查找的结果都是文件,而第2种方法除了文件外还有文件夹,需要使用条件过滤,第3种方法当将属性参数Attributes设置为vbDirectory时,不仅查找到文件还可以查找到文件夹,这在编程时需要注意的事项。
4)第3种方法只能查找到文件名,文件的其他属性不能获得,限制了应用,而第1种方法和第2种方法还可以获取文件的其他属性,如文件的大小,文件的创建日期,最后修改日期等信息。
5小结
本文基于VB通过三种不同的方法遍历文件,显示文件名,给出的实现代码被简化,没有加入出错处理程序,读者可以进一步完善。另外如果要列出指定文件夹及其子文件夹中的所有文件可以在此程序上稍加改变,主要使用递归方法实现。遍历文件在许多场合有非常多的应用,相信还有其他方法实现,希望起到抛砖引玉的作用。上述代码在Windows7下,由Microsoft Visual Basic6.0编译通过运行。
参考文献:
[1] 林卓然.VB语言程序设计[M].北京:电子工业出版社,2012.
[2] 张增良,侯申.程序设计基础教程(VB版)[M]. 西安:西安交通大学出版社,2014.
【通联编辑:王力】