我使用的是VSTS 2008 + C#+ .Net 3.0。我希望按创建时间枚举目录中的所有文件,即最近创建的文件最初会被激活,最后会枚举较旧的文件。任何想法如何实现这个?
答案 0 :(得分:6)
像这样的东西
System.IO.FileInfo[] array = new System.IO.DirectoryInfo("directory_path").GetFiles();
Array.Sort(array, delegate(System.IO.FileInfo f1, System.IO.FileInfo f2)
{
return f2.CreationTimeUtc.CompareTo(f1.CreationTimeUtc);
});
答案 1 :(得分:4)
我可能会使用LINQ和列表...这样的事情应该有效:
DirectoryInfo di = new DirectoryInfo("YourPath");
List<FileInfo> files = di.GetFiles().OrderBy(f => f.CreationTime).ToList();
foreach (FileInfo file in files)
{
//do something
}
答案 2 :(得分:2)
尝试这样的事情:
DirectoryInfo di = new DirectoryInfo("path to folder");
FileInfo[] files = di.GetFiles();
IOrderedEnumerable<FileInfo> enumerable = files.OrderBy(f => f.CreationTime);
foreach (FileInfo info in enumerable)
{
// do stuff...
}
答案 3 :(得分:2)
编辑:已更新,此处为非LINQ解决方案
FileInfo[] files = new DirectoryInfo("directory").GetFiles();
Array.Sort(files, delegate(FileInfo f1, FileInfo f2) {
return f2.CreationTime.CompareTo(f1.CreationTime);
});
以上将按最新到最早排序。要按最旧到最新排序,请将代理更改为:return f1.CreationTime.CompareTo(f2.CreationTime);
<小时/> LINQ解决方案:
FileInfo[] files = new DirectoryInfo("directory").GetFiles();
var results = files.OrderByDescending(file => file.CreationTime);
使用OrderByDescending按最近的CreationTime排序,否则使用OrderBy从最旧的CreationTime排序到最新的CreationTime。
答案 4 :(得分:-1)
DirectoryInfo baseFolder=new DirectoryInfo("folderName");
FileInfo[] files=baseFolder.GetFiles("");
for(int i=1; i<=files.Length;i++)
for(int j=1; j<files.Length;j++)
{
if(files[j].CreationTime > files[j+1].CreationTime)
{
FileInfo f = files[j];
files[j] = files[j+1];
files[j+1] = f;
}
}