2011-04-28 85 views
4

儘管在documentation中沒有提到,Directory.GetDirectories()似乎總是返回按字典順序排序的目錄名稱數組。依靠這個實現細節是否安全(它適合我的需要)還是應該是偏執狂,並根據需要對我的目錄列表進行排序?Directory.GetDirectories()返回的目錄順序是否有保證?

[Test] 
public void SortedDirectories() 
{ 
    string[] directories = Directory.GetDirectories(@"C:\Windows"); 
    Assert.That(directories, Is.Ordered); 
} 

回答

6

你看到的是NTFS的神器。其他文件系統(特別是FAT或網絡文件系統)可能不會顯示相同的行爲。

如果您需要將收集進行排序,請自行排序(可能首先檢查它是否已經排序,因爲這可能是一種可能的情況)。

例如,下面的程序:

using System; 
using System.IO; 
using System.Collections; 

public class Foo 
{ 
    public static void Main(string[] args) 
    { 
     string[] subdirectoryEntries = Directory.GetDirectories(@"j:\"); 

     foreach (string d in subdirectoryEntries) { 
      Console.WriteLine(d); 
     } 
    } 
} 

顯示此輸出爲我的FAT格式化記者:驅動器:

j:\Qualcomm 
j:\Precor 
j:\EditPadPro 
j:\Qt 

而且,即使NTFS排序目錄條目,它可能不會對它們進行排序途徑you想要:Old New Thing - Why do NTFS and Explorer disagree on filename sorting?

5

如果它的一個未公開的實現細節,那麼你不應該依賴它。即使它現在成立,框架的未來版本也沒有義務保持這種行爲。

3

不!它在NTFS上就像那樣工作。

我們有一個NAS網絡服務器運行Linux,我們得到不幸的是混沌行爲......

也許它按訪問日期或東西,但它是不同步什麼,你會在你的本地分區或見NTFS網絡共享...

這就是爲什麼我建議你偏執狂:D

相關問題