By MBPDLPayday Loans

C# 对文件夹中的文件以修改日期排序

默认情况下,通过类似这样的方法得到的往往是以文件名来排序的数组.

DirectoryInfo directory = new DirectoryInfo(@”C:\windows”);

FileInfo[] files = directory.GetFiles();
这在我最近的一个项目中变成了一个bug: 我的服务器端程序会监控一个文件夹,并隔一段时间将里面的一个文件取出做后续处理. 但是,当有很多文件被丢入监控文件夹的时候,我每次都是将文件名靠前的第一笔取出,这就造成了”排名”靠后的文件一段时间内不会被取到.违反了最初设计时”先进先出”的原则.

但是怎样对这个数组做排序呢?用排序算法自己实现当然是个solution,但其实.net中包含了一个这样的接口–IComparer.IComparer中包含了一个方法:compare.当实现了这个自定义类之后,你就可以使用Array.Sort()方法来对其进行调用.当然,你也可以按创建时间来进行排序.

比如象下面这样:

class CompareFileInfo: IComparer
{
public int Compare(object x, object y)
{
FileInfo file = (FileInfo)x;
FileInfo file2 = (FileInfo)y;
return DateTime.Compare(file.LastWriteTime, file2.LastWriteTime);
}
}

DirectoryInfo directory = new DirectoryInfo(@”C:\windows”);
FileInfo[] files = directory.GetFiles();
Array.Sort(files, new CompareFileInfo());

参考自: Shane’s Blog Shane’s Blog

One Response to “C# 对文件夹中的文件以修改日期排序”
  1. Thank U so much

Leave a Reply