什么是在c#中的文件夹中find最新创build的文件的好方法?

我有一个networking文件夹,可以包含多达10,000个文件(通常约5000)。

我可以使用c#获取该文件夹中最近创build的文件的文件path的最新方法是什么?

目前我正在使用下面,但想知道是否有一个更快的方法。

谢谢。

DirectoryInfo di = new DirectoryInfo(xmlFileLocation); var feedFiles = di.GetFiles("*.xml"); var sortedFeedFile = from s in feedFiles orderby s.CreationTime descending select s; if(sortedFeedFile.Count() > 0){ mostRecentFile = sortedFeedFile.First(); } 

排序文件将带您O(nlogn)时间。 如果你所需要的只是最近创建的,那么只需扫描文件并找到最新的O(n)就会更快。

我认为你最好的机会是考虑创建一个Win32 API调用 – 这可能会也可能不会更快,但它可能是值得研究的。 请参阅WIN32_FILE_ATTRIBUTE_DATA结构来执行此操作。

获取FileInfo;如果没有文件,则返回null,不进行排序:

 var feedFiles = di.GetFiles("*.xml"); FileInfo mostRecentFile = null; if (feedFiles.Any()) { mostRecentFile = feedFiles .Aggregate((x, c) => x.CreationTime > c.CreationTime ? x : c); }