2011-06-02 52 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中有效,它可能不會在你的下一個。