我有一个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); }