#include <dirent.h>
#include <sys/stat.h>
#include <sys/types.h>
bool get_all_files(const std::string& dir_in, std::vector<std::string>& files) {
if (dir_in.empty()) {
return false;
}
struct stat s;
stat(dir_in.c_str(), &s);
if (!S_ISDIR(s.st_mode)) {
return false;
}
DIR* open_dir = opendir(dir_in.c_str());
if (NULL == open_dir) {
std::exit(EXIT_FAILURE);
}
dirent* p = nullptr;
while( (p = readdir(open_dir)) != nullptr) {
struct stat st;
if (p->d_name[0] != '.') {
//因为是使用devC++ 获取windows下的文件,所以使用了 "\" ,linux下要换成"/"
std::string name = dir_in + std::string("\\") + std::string(p->d_name);
stat(name.c_str(), &st);
if (S_ISDIR(st.st_mode)) {
get_all_files(name, files);
}
else if (S_ISREG(st.st_mode)) {
files.push_back(name);
}
}
}
closedir(open_dir);
return true;
}
写了一个可以获取指定目录下所有文件的程序,方便大家使用