确实可以提高directory_iterator在Windows上按字母顺序访问文件和文件夹
Does boost directory_iterator visit files and folders in alphabetical order on Windows
我有一个文件夹fold
,其中包含子文件夹sub1
,sub2
...subX
,里面有独特的文件。
假设我需要找到文件 X 的第一个匹配项。
我所需要的只是获得一个按顺序通过subX
的fold
迭代器,或者获取文件夹列表并自己订购。我运行了几次,我注意到迭代器确实是按字母顺序排列的,但是,我找不到文档中指定的它,所以这可能是巧合。但是我看到:
Linux 列表未排序。这是因为未指定目录迭代的顺序。排序取决于底层操作系统 API 和文件系统细节。因此,我们需要自己对结果进行排序。
- Windows上没有任何内容(让我想知道(
编辑:fold
中的文件始终按字母顺序生成,以防万一更改任何内容...
问题:
我可以相信它总是会按顺序迭代吗?Windows的">底层操作系统API"是否指定顺序?基于这篇文章:如果没有指定排序顺序,DIR 命令排列文件的顺序是什么,我不这么认为。
boost::filesystem
将在Windows上以FindFirstFile
和FindNextFile
来实现。
这些函数的文档指出:
搜索返回文件的顺序(如字母顺序(无法保证,并且取决于文件系统。如果必须对数据进行排序,则应用程序必须在获取所有结果后执行排序。
我可以相信它总是会按顺序迭代吗?
参考资料说:
未指定通过取消引用directory_iterator的连续增量获得的目录条目的顺序。
因此,不,您永远不能相信它会按顺序迭代。
如果需要特定顺序,则可以将条目存储到容器中,对其进行排序,然后迭代容器。
这同样适用于std::filesystem::directory_iterator
。
相关文章:
- 通过方法访问结构
- CMake-按正确顺序将项目与C运行时对象文件链接
- 序列容器 - 只能按顺序访问元素
- 从反向顺序C++访问矢量时运行时出错
- 确实可以提高directory_iterator在Windows上按字母顺序访问文件和文件夹
- 使用GLGENBUFFERS()访问违规,并以正确的顺序进行GLEW初始化
- 最快的顺序访问
- 访问类成员的C++操作顺序
- 如何以相反的顺序访问数组中的元素
- 重新配置C++代码以处理“警告:未按顺序修改和访问参数”
- 高效地执行文件I/O,以便对大型三维网格进行非顺序访问
- 如何在 OpenCV 中按顺序访问轮廓
- GDBM 顺序访问:错误
- 类结构保证是访问顺序
- 用于顺序内存访问的编译器嵌套循环优化
- 每次读/写有多少次随机/顺序访问
- 如何在openCV中使用循环顺序访问图像
- 以反向顺序访问数组
- 如果已知访问顺序是安全的,如何在没有互斥锁的情况下同步线程/CPU
- Clang访问修饰符顺序和decltype