#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<dirent.h>
#include<unistd.h>
#include<vector>
#include<string>
#include<iostream>
using namespace std;
int readFileList(char *basePath)
{
DIR *dir;
struct dirent *ptr;
char base[1000];
vector<string> file_names;
if((dir =opendir(basePath))==NULL)
{
perror("Open direrror");
exit(-1);
}
while((ptr =readdir(dir))!=NULL)
{
if(strcmp(ptr->d_name,".")==0|| strcmp(ptr->d_name,"..")==0)
continue;
//file
else if(ptr->d_type == 8)
{
file_names.push_back(ptr->d_name);
//printf("d_name:%s%s\n",basePath,ptr->d_name);
}
//link file
else if(ptr->d_type ==10)
printf("d_name:%s%s\n",basePath,ptr->d_name);
//dir
else if(ptr->d_type == 4)
{
memset(base,'\0',sizeof(base));
strcpy(base,basePath);
strcat(base,"/");
strcat(base,ptr->d_name);
readFileList(base);
}
}
for(vector<string>::iterator it= file_names.begin();it!=file_names.end();it++)
{
cout<<basePath<<"/"<<*it<<endl;
}
closedir(dir);
return 0;
}
int main()
{
DIR *dir;
char basePath[1000];
memset(basePath,'\0',sizeof(basePath));
getcwd(basePath,999);
printf("the current diris:%s\n",basePath);
strcat(basePath,"/123");
readFileList(basePath);
return 0;
}
code 提取文件夹下所有文件的名字(包括子文件夹)
最新推荐文章于 2024-06-04 16:20:33 发布