#include <iostream>
#include <dirent.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
#include <cstring>
#include <vector>
using namespace std;
void BrowseDir( char* dir,std::vector<std::string> &vFiles)
{
DIR *pDir = NULL;
struct dirent *ent;
char childpath[512];
printf("%s\n",dir);
pDir = opendir((char *)dir);
if ( pDir == NULL )
{
printf("Open %s failed\n",dir );
return ;
}
memset(childpath, 0, sizeof(childpath));
while ((ent = readdir(pDir)) != NULL)
{
struct stat fileStat;
sprintf(childpath, "%s/%s", dir, ent->d_name);
int status = stat(childpath, &fileStat);
if (S_ISDIR(fileStat.st_mode))
{
if (strcmp(ent->d_name, ".") == 0 || strcmp(ent->d_name, "..") == 0)
continue;
sprintf(childpath, "%s/%s", dir, ent->d_name);
printf("--------------------\n");
BrowseDir(childpath,vFiles);
}
}
closedir(pDir);
}
int main(int argc,const char* argv[])
{
//char path[]="..";
char path[]=".";
std::vector<std::string> file;
BrowseDir(path,file);
return 0;
}
此代码运行将会打印当前文件夹和当前文件夹之下的所有文件夹,不会打印文件。