首页 > 解决方案 > boost directory_iterator 是否在 Windows 上按字母顺序访问文件和文件夹

问题描述

我有一个带有子文件夹的文件foldsub1sub2... subX,里面有唯一的文件。

假设我需要找到文件 X 的第一次出现。

我所需要的只是获得一个按顺序运行的fold迭代器,subX或者获得一个文件夹列表并自己对其进行排序。我运行了几次,我注意到迭代器确实是按字母顺序排列的,但是,我在文档中找不到它,所以这可能是巧合。然而我看到:

Linux 列表未排序。那是因为目录迭代的顺序是未指定的。排序取决于底层操作系统 API 和文件系统细节。所以我们需要自己对结果进行排序。

编辑:文件fold总是按字母顺序生成,以防发生任何变化......

问题:

我可以相信它总是会按顺序迭代吗?Windows 的“底层操作系统 API ”是否指定顺序?基于这篇文章:如果没有指定排序顺序,DIR命令排列文件的顺序是什么,我不这么认为。

标签: c++windowsboost

解决方案


boost::filesystem将在windows 方面FindFirstFileFindNextFile在windows 上实施。

这些函数的文档说明:

搜索返回文件的顺序(例如字母顺序)无法保证,并且取决于文件系统。如果必须对数据进行排序,则应用程序必须在获得所有结果后进行排序。


推荐阅读