多くのファイルを含むフォルダがあります。ディレクトリ内のファイル名を作成日時でソートする簡単な方法はありますか?
を使用するとDirectory.GetFiles()
、ファイル名でソートされたファイルが返されます。
多くのファイルを含むフォルダがあります。ディレクトリ内のファイル名を作成日時でソートする簡単な方法はありますか?
を使用するとDirectory.GetFiles()
、ファイル名でソートされたファイルが返されます。
回答:
これはあなたのために働くことができます。
using System.Linq;
DirectoryInfo info = new DirectoryInfo("PATH_TO_DIRECTORY_HERE");
FileInfo[] files = info.GetFiles().OrderBy(p => p.CreationTime).ToArray();
foreach (FileInfo file in files)
{
// DO Something...
}
@jing:「DirectoryInfoソリューションはこれよりもはるかに高速です(特にネットワークパスの場合)」
確認できません。Directory.GetFilesがファイルシステムまたはネットワークキャッシュをトリガーするかのようです。最初のリクエストにはしばらく時間がかかりますが、次のリクエストは、新しいファイルが追加された場合でもはるかに高速です。私のテストでは、同じパターンでDirectory.getfilesとinfo.GetFilesを実行し、どちらも同じように実行しました
GetFiles done 437834 in00:00:20.4812480
process files done 437834 in00:00:00.9300573
GetFiles by Dirinfo(2) done 437834 in00:00:20.7412646
DirectoryInfo dirinfo = new DirectoryInfo(strMainPath);
String[] exts = new string[] { "*.jpeg", "*.jpg", "*.gif", "*.tiff", "*.bmp","*.png", "*.JPEG", "*.JPG", "*.GIF", "*.TIFF", "*.BMP","*.PNG" };
ArrayList files = new ArrayList();
foreach (string ext in exts)
files.AddRange(dirinfo.GetFiles(ext).OrderBy(x => x.CreationTime).ToArray());