首页 > 代码库 > linux c++有序遍历目录
linux c++有序遍历目录
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());//排序 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。