递归列出目录下的所有文件

来源:互联网 发布:js 正则表达式调用 编辑:程序博客网 时间:2024/05/01 01:36
#include <iostream>#include <io.h>#include <fstream>#include <string>using namespace std;int count=0;//用来表示缩进void findFile(string dir){long filehandle;_finddata_t fileInfo;string dirPattern=dir+"\\*.*";//给定目录下所有形式的文件名filehandle=_findfirst(dirPattern.c_str(),&fileInfo);//_findfirst函数的第一个参数必须_findnext(filehandle,&fileInfo);//去除.和..,一般列出来的文件中,头两个是.和..while(!_findnext(filehandle,&fileInfo)){if(fileInfo.attrib!=_A_SUBDIR)//如果不是目录{for(int m=0;m<count;m++) cout<<" ";cout<<fileInfo.name<<endl;}else if(fileInfo.attrib==_A_SUBDIR)//如果是目录{count=count+4;for(int i=0;i<count;i++) cout<<" ";cout<<"subdir=========="<<fileInfo.name<<endl;string tempdir("\\");//用string是因为字符串连接方便,c的要用函数strcat,太麻烦string temp(fileInfo.name);tempdir+=temp;string dir1(dir);dir1+=tempdir;//dir1+="\\*.*";findFile(dir1);for(i=0;i<count;i++) cout<<" ";cout<<"subdir=========="<<fileInfo.name<<endl;count=count-4;//cout<<"dir1 is :"<<dir1<<endl;}}_findclose(filehandle);}int main(int argc, char **argv){//============string dir(".");//从当前目录开始findFile(dir);return 0;}