readdir用于读取某个文件夹中的全部文件或文件夹,相当于ls。
但是readdir并不保证读取后的文件顺序,在不同的操作系统上可能有不同的顺序。
在某些场景下需要注意,比如读取配置文件时,可能会根据配置文件进行一些初始化,但如果初始化时有些必须的内容还未初始化,可能出现问题。
如果要实现排序可能要自行排序。
如下所示:读取文件后,用sort进行排序。
vector<string> fileNameList;
sort(fileNameList.begin(), fileNameList.end());
//递归获取文件夹下所有文件
void GetFiles(string filePath, vector<string>& files)
{if(filePath.empty()) return;struct dirent *filename = NULL;DIR *dir = NULL;dir = opendir(filePath.c_str());if(dir == NULL){return ;}string mySep = "/";while((filename = readdir(dir)) != NULL){if(!strcmp(filename->d_name,".")||!strcmp(filename->d_name,".."))continue;string path = filePath + mySep + filename->d_name;struct stat s;lstat(path.c_str(),&s);if(S_ISDIR(s.st_mode)){GetFiles(path, files);}else{files.push_back(path);}}closedir(dir);
}
Chris's Wiki :: blog/unix/ReaddirOrder https://utcc.utoronto.ca/~cks/space/blog/unix/ReaddirOrder