【发布时间】:2012-01-23 19:30:31
【问题描述】:
我正在使用 opendir/readdir 获取类 linux 系统上的文件列表。似乎目录条目是按文件名的字母顺序返回的。但是,我在手册页中没有看到任何关于保证此订单的内容。
谁能告诉我 readdir 是否保证订单?
【问题讨论】:
-
根据经验,如果文档中没有,则答案是否定的。即使所有实现的顺序恰好一致,如果没有记录,也可能无法保证。
-
如果它们是按字母顺序出现的,那几乎可以肯定它们最初是按字母顺序创建的,例如通过
unzip或tar提取它们...readdir不提供任何顺序。 -
顺便说一句,
scandir可能会在您想订购结果或随机访问它们时很有用。它在 POSIX 2008 中被标准化,在此之前是一个常见的扩展。 -
你得到的排序几乎肯定取决于文件系统。在 FAT32 上,我按创建顺序获取文件,在 NTFS 上通常按字母顺序但有一些例外,在 ext4 上没有明显的顺序。你的保证订单就到这里了。 :)
-
我什至见过“.”的情况。和“..”不是第一个条目(在网络安装的文件系统中)。当创建和删除混杂在一起时,我不会太指望创建顺序。