2011-06-02 51 views
11

Ruby docs别提这个。Dir.glob是否可以保证订单?

Dir.glob("*")确保它返回的文件的顺序,还是我需要自己排序它们以确保它?

+1

我不认为这是任何方式排序,'dir.c'在Ruby源调用'READDIR(3)'来生成列表做,并且我没有看到文件中有'sort'的任何引用... – sarnold 2011-06-02 21:58:54

+1

+1。我为1.9.3做了更精确的RDoc。 – 2011-06-27 23:42:16

回答

9
+1

此外,我认为,在低层次中从来没有真正的内部排序,因此每个目录列表输出都以特殊方式预先排序;硬盘/文件系统有自己的文件/目录组织,这通常不是按字母顺序排列的。这意味着:如果你需要排序清单 - >排序! – asaaki 2011-06-02 23:28:08

+1

@asaaki,有时* *是低级次序。例如,NTFS以原始二进制Unicode顺序(顺序排序)存储目录条目。请参阅Raymond Chen的文章:[“为什么NTFS和Explorer不同意文件名排序?”](http://blogs.msdn.com/b/oldnewthing/archive/2005/06/17/430194.aspx)。他还指出,所使用的特定顺序不适合用户,因此您仍然需要对UI进行排序。 – efotinis 2011-11-06 08:45:37

1

如果文档没有说出来,那么就没有保证,你需要为自己排序。即使它在你当前的ruby中有效,它可能不会在你的下一个。

相关问题