所谓遍历目录,就是给定一个目录,访问其中的所有文件(包括子目录下的文件)。迭代是比较常用的遍历算法。本文利用C++面向对象的特性,通过一个类CBrowseDir,对目录遍历进行了封装。用户只需掌握该类四个成员函数的用法,就可以在自己的程序中,很方便地实现目录遍历。
---- 类CBrowseDir使用了迭代算法。因为算法不是本文重点,笔者不打算展开进一步讨论,对其感兴趣者可参考相关资料。
一、类成员函数说明:
---- bool SetInitDir(const char *dir);
---- 功能:设置要遍历的目录。
---- 参数:dir 指向要遍历的目录,可以使用相对路径,比如"d:../hawk";还可以使用网络路径,比如"//wf/d/hawk"(其中wf是主机名,d是共享目录,hawk是目录)。
---- 返回值:返回true,表示设置成功;返回false,说明目录不可用。
---- bool BeginBrowse(const char *filespec);
---- 功能:开始遍历目录中由filespec指定的文件(包括隐藏文件)。
---- 参数:filespec 指定文件类型,可以使用通配符*和?,比如"*.exe"或"a?.*"都是合法参数。注意:filespec中不能包含路径,象"hawk/*.*"是错误的。
---- 返回值:函数返回true,表明已顺利遍历完所有文件;返回false,遍历过程被用户中止。
---- virtual bool ProcessFile(const char *filename);
---- 功能:虚函数。每找到一个文件,程序就会调用ProcessFile,并把文件名作为参数传递给函数。如果函数返回false,则强制遍历中止,并导致类成员函数函数BeginBrowse返回false。 用户应该覆写此函数,以加入自己的处理代码。
---- 参数:filename 指向一个文件名。注意:filename使用绝对路径。