#include <iostream.h> #include <io.h> #include <string.h> #include "stdlib.h" const int MAXLEN = 1024; //定义最大目录长度 unsigned long FILECOUNT = 0; //记录文件数量 void ListDir(const char* pchData) { _finddata_t fdata; //定义文件查找结构对象 long done; char tempdir[MAXLEN] = {0}; //定义一个临时字符数组 strcat(tempdir, pchData); //连接字符串 strcat(tempdir, "\\*.rar"); //连接字符串(搜索以RAR结尾的文件) //cout << tempdir << endl; done = _findfirst(tempdir, &fdata); //开始查找文件 if(done!=-1) //是否查找成功 { int ret = 0; while(ret!=-1) //定义一个循环 { if(fdata.attrib != _A_SUBDIR) //判断文件属性 { //cout << fdata.name << endl; if(strcmp(fdata.name, "...")!=0 && strcmp(fdata.name, "..") != 0 && strcmp(fdata.name, ".") != 0) //过滤 { char dir[MAXLEN] = {0}; //定义字符数组 strcat(dir, pchData); //连接字符串 strcat(dir, "\\"); strcat(dir, fdata.name); cout << dir << endl; //输出查找到的文件名 FILECOUNT++; //累加文件个数 } } ret = _findnext(done, &fdata); //查找下一个文件 if(fdata.attrib == _A_SUBDIR && ret != -1) //判断文件属性,如果是目录,则递归调用 { if(strcmp(fdata.name, "...") != 0 && strcmp(fdata.name, "..") != 0 && strcmp(fdata.name, ".") != 0) //过滤 { char pdir[MAXLEN] = {0}; //定义字符数组 strcat(pdir, pchData); //连接字符串 strcat(pdir, "\\"); strcat(pdir, fdata.name); cout << pdir << endl; //输出要递归调用的目录名 ListDir(pdir); //递归调用 } } } } } int main(int argc, char* argv[]) //主函数 { while(true) //设计一个循环 { FILECOUNT = 0; char szFileDir[128] = {0}; //定义一个字符数组,存储目录 cin >> szFileDir; //让用户输入要查找的目录名 if(strcmp(szFileDir, "e") == 0) //退出系统 { break; //exit(0); } ListDir(szFileDir); //调用ListDir函数遍历目录 cout << "共计" << FILECOUNT << "个文件" << endl; //统计文件数量 } return 0; }