Linux获取目录下的所有文件
#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
#include <cstddef>
#include <string>
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <vector>
using namespace std;
void getFiles(std::string path, std::vector<std::string> &files)
{
DIR *dir;
struct dirent *ptr;
if ((dir = opendir(path.c_str())) == NULL)
{
perror("Open dir error...");
exit(1);
}
while ((ptr = readdir(dir)) != NULL)
{
if (strcmp(ptr->d_name, ".") == 0 || strcmp(ptr->d_name, "..") == 0)
continue;
else if (ptr->d_type == 8) // 普通文件
files.push_back(path + ptr->d_name);
else if (ptr->d_type == 10) // 符号链接
continue;
else if (ptr->d_type == 4) // 目录文件
{
//files.push_back(ptr->d_name);
getFiles(path + ptr->d_name + "/", files);
}
}
closedir(dir);
}
int main()
{
vector<string> strVec;
getFiles("/home/xxx/", strVec);
for (int i = 0; i < strVec.size(); i++)
{
cout << strVec[i] << endl;
}
}