5

ドキュメントには記載されていませんDirectory.GetDirectories()が、常に辞書式順序でソートされたディレクトリ名の配列を返すように見えます。この実装の詳細に依存するのは安全ですか(私のニーズに適しています)、または必要に応じてディレクトリリストを並べ替える必要がありますか?

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

3 に答える 3

6

文書化されていない実装の詳細である場合は、それに依存しないでください。現在それが当てはまるとしても、フレームワークの将来のバージョンはこの振る舞いを維持する義務を負いません。

于 2011-04-28T00:21:39.857 に答える
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:ドライブのこの出力を表示します。

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

また、NTFSはディレクトリエントリを並べ替えますが、希望どおりに並べ替えられない場合があります古い新しいもの-NTFSとエクスプローラがファイル名の並べ替えに同意しないのはなぜですか。

于 2011-04-28T00:22:20.630 に答える
4

いいえ!NTFSではそのように機能します。

Linuxを実行しているNASネットワークサーバーがあり、残念ながら混沌とした動作になります...

アクセスした日付などでソートされているかもしれませんが、ローカルパーティションまたはNTFSネットワーク共有に表示されるものと同期していません...

だから私はあなたに妄想的であることを提案します:D

于 2011-04-28T00:26:20.897 に答える