虽然documentation中没有提到,Directory.GetDirectories()
似乎总是返回按字典顺序排序的目录名数组。依赖这个实现细节是否安全(它适合我的需要)还是应该偏执并根据需要对我的目录列表进行排序?
[Test]
public void SortedDirectories()
{
string[] directories = Directory.GetDirectories(@"C:\Windows");
Assert.That(directories, Is.Ordered);
}
答案 0 :(得分:6)
如果它是一个未记录的实现细节,那么你不应该依赖它。即使它现在成立,框架的未来版本也没有义务保持这种行为。
答案 1 :(得分: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:drive显示此输出:
j:\Qualcomm
j:\Precor
j:\EditPadPro
j:\Qt
此外,即使NTFS对目录条目进行排序,它也可能不会按照您想要的方式对它们进行排序:Old New Thing - Why do NTFS and Explorer disagree on filename sorting?
答案 2 :(得分:4)
没有!它就像在NTFS上一样。
我们有一台运行Linux的NAS网络服务器,我们不幸会出现混乱的行为......
可能按日期访问或其他东西排序,但它与您在本地分区或NTFS网络共享上看到的内容不同步...
这就是为什么我建议你是偏执狂:D