linux c++有序遍历目录

来源:互联网 发布:extjs5 项目实例源码 编辑:程序博客网 时间:2024/05/18 03:12



readdir读取的顺序貌似没什么规律的。

这里http://bbs.csdn.net/topics/310054496有人说跟每个文件的d_off有关。但在我机器上测试过貌似没有规律。

好吧。

其实我只是需要确保每次遍历文件夹的时候,顺序都是一样的就行了。所以自己排序一下即可。



/** * path:目录 * files:用于保存文件名的vector * r:是否需要遍历子目录 */void listDir(const char *path,vector<string>& files,bool r = false){DIR *pDir;struct dirent *ent;char childpath[512];char absolutepath[512];pDir = opendir(path);memset(childpath, 0, sizeof(childpath));while ((ent = readdir(pDir)) != NULL){if (ent->d_type & DT_DIR){if (strcmp(ent->d_name, ".") == 0 || strcmp(ent->d_name, "..") == 0){continue;}if(r) //如果需要遍历子目录{sprintf(childpath, "%s/%s", path, ent->d_name);listDir(childpath,files);}}else{sprintf(absolutepath, "%s/%s", path, ent->d_name);files.push_back(absolutepath);}}sort(files.begin(),files.end());//排序}


0 0
原创粉丝点击