Directory.EnumerateFiles
メソッドの既定の読み込み順序は何ですか?それは一貫していますか?Directory.EnumerateFiles読み込み順序(C#)
これまでのところ私の経験では、ファイルが作成された日だと思われますが、私はこれの確認を見つけることができませんでした。
理由私は、作業中のプログラムの一部が、ディレクトリからバイナリファイルを順番に配列に読み込まれたオブジェクトに読み込むため、質問します。これらのオブジェクトは、インデックスの配列によって互いに参照します。つまり、配列にロードされる順序は、インデックスの移動を避けるために一貫性を保つ必要があります。
私はここにいますが、もう少し小さな質問があります。ファイルが削除されると、私が何をしていても配列にロードされたファイルのインデックスが明らかに変更されます。この問題を避けるための提案はありますか?私は今までストレージを心配していたために辞書を使用することを避けました(避けることができれば、テキストキーの配列を格納するのではなくなります)が、実現可能な唯一のアプローチであれば実装する必要があります。
EDIT:あなたの答えからの優れたヒントの後、私は、ファイルの名前を使用して、辞書のアプローチにリファクタリングしました。パフォーマンスへの影響はごくわずかです。可読性と保守性が大幅に向上しているため、非常にうまく機能しています。
なぜインデックスの代わりに参照を保持するだけではないのですか?あなたがこれをした場合、インデックスがシャッフルされる心配はありません。 – casperOne
ファイルのシリアル化の仕組みのために。シリアライゼーションを介して参照を含むファイルを保存してからそれらのファイルをロードする場合は、毎回オブジェクトツリー全体をロードして大量の重複を招くことになります。たとえば、CarがTireとTruckの参照Tireを参照していて、それらが保存されて読み込まれている場合、私はTireの2つの複製インスタンスを持ちます。 – Djentleman
GetFiles(本質的に 'EnumerateFiles'を呼び出します)については、[MSDN](http://msdn.microsoft.com/en-us/library/07wt70x2.aspx)を参照してください。*返されるファイル名の順序は、保証されません。特定の並べ替え順序が必要な場合は、Sort()メソッドを使用してください。*ドキュメントに記載されているように、独自の並べ替え方法を使用することをお勧めします。 – Mir