c++ - boost directory_iterator 是否在 Windows 上按字母顺序访问文件和文件夹
问题描述
我有一个带有子文件夹的文件fold
夹sub1
,sub2
... subX
,里面有唯一的文件。
假设我需要找到文件 X 的第一次出现。
我所需要的只是获得一个按顺序运行的fold
迭代器,subX
或者获得一个文件夹列表并自己对其进行排序。我运行了几次,我注意到迭代器确实是按字母顺序排列的,但是,我在文档中找不到它,所以这可能是巧合。然而我看到:
Linux 列表未排序。那是因为目录迭代的顺序是未指定的。排序取决于底层操作系统 API 和文件系统细节。所以我们需要自己对结果进行排序。
- Windows 上什么都没有(让我想知道)
编辑:文件fold
总是按字母顺序生成,以防发生任何变化......
问题:
我可以相信它总是会按顺序迭代吗?Windows 的“底层操作系统 API ”是否指定顺序?基于这篇文章:如果没有指定排序顺序,DIR命令排列文件的顺序是什么,我不这么认为。
解决方案
boost::filesystem
将在windows 方面FindFirstFile
和FindNextFile
在windows 上实施。
这些函数的文档说明:
搜索返回文件的顺序(例如字母顺序)无法保证,并且取决于文件系统。如果必须对数据进行排序,则应用程序必须在获得所有结果后进行排序。
推荐阅读
- c++ - 是否可以在没有明确专业化的情况下推断模板参数?
- javascript - 页面刷新图像随机加载
- ssl - FAILED_NOT_VISIBLE 在创建谷歌托管 ssl 证书时出错
- bash - 在 simphony-remote 中为 docker 部署创建基本映像时出错
- spring - 无法让 Spring Boot 启用缓存
- javascript - 如何确保在输入时,“+”号不会像这样“%2b”发出?
- npm - 定义通过 npx 运行的默认命令
- pyspark - 如何使用pyspark从按某些字段分组的给定数据集中获取最大值(日期)?需要在pyspark中打印出所有符合这个条件的记录
- java - 尝试使用带有 spring 的 jsp 表单发布时出现 Whitelabel 错误
- android-studio - OpScreenModeManager 在真实设备(不是模拟器)上运行应用程序时向 Android Studio 日志发送垃圾邮件