Directory.GetFiles() のソート 質問する

Directory.GetFiles() のソート 質問する

System.IO.Directory.GetFiles()を返しますstring[]。返される値のデフォルトの並べ替え順序は何ですか? 名前順だと想定していますが、そうであれば、現在のカルチャはどの程度影響しますか? 作成日などに変更できますか?

アップデート:MSDN では、.Net 3.5 ではソート順が保証されていないと指摘されていますが、2.0 バージョンのページにはまったく何も記載されておらず、どちらのページも作成時間や変更時間などでソートするのに役立ちません。配列を取得すると、その情報は失われます (配列には文字列のみが含まれます)。取得する各ファイルをチェックする比較子を作成することもできますが、それはおそらく .GetFiles() メソッドが既にこれを実行しているときに、ファイル システムに繰り返しアクセスすることを意味します。非常に非効率に思えます。

ベストアンサー1

CreationTime などのファイルのプロパティに興味がある場合は、System.IO.DirectoryInfo.GetFileSystemInfos() を使用する方が合理的です。次に、System.Linq の拡張メソッドの 1 つを使用してこれらを並べ替えることができます。例:

DirectoryInfo di = new DirectoryInfo("C:\\");
FileSystemInfo[] files = di.GetFileSystemInfos();
var orderedFiles = files.OrderBy(f => f.CreationTime);

編集 - 申し訳ありませんが、.NET2.0 タグに気付かなかったので、LINQ ソートは無視してください。ただし、System.IO.DirectoryInfo.GetFileSystemInfos() を使用するという提案は依然として有効です。

おすすめ記事