#include<dirent.h>
int walk_dir(const char *path,list<string> &file_list)
{
struct dirent *ent = NULL;
DIR *pdir;
string temp = "",path_str = path;
if(path_str[path_str.size()-1] != '/')
path_str += "/";
pdir = opendir(path); // DIR*opendir(const char *pathname)
if(pdir == NULL)
{
cout<<"errorto open the dir."<<endl;
return -1;
}
while((ent = readdir(pdir)) != NULL) //structdirent *readdir(DIR *dp); 结构体成员百度去
{
if(ent->d_type== 8) //1000,说明是一个file
{
temp =ent->d_name;
file_list.push_back(path_str+temp); //
}
else //是个dir
{
if(strcmp(ent->d_name,".")== 0 || strcmp(ent->d_name,"..") ==0) //当前目录和上一级目录,忽略
continue;
temp =ent->d_name;
stringnew_dir = path_str+temp;
walk_dir(new_dir.c_str(),file_list);
}
}
closedir(pdir);
return 0;
}