我有一个包含许多文件的文件夹。是否有任何简单的方法来获取目录中按其创建日期/时间排序的文件名?
如果使用Directory.GetFiles()
,它将返回按文件名排序的文件。
Answers:
这可能为您工作。
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...
}
您可以使用Linq
var files = Directory.GetFiles(@"C:\", "*").OrderByDescending(d => new FileInfo(d).CreationTime);
@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());