简体   繁体   中英

What is a good way to find the latest created file in a folder in c#?

I have a network folder which can contain up to 10,000 files (usually around 5000).

What is the fatest way I can get the filepath of the most recently created file in that folder using c#?

Currently I am using the below, but wondered if there was a quicker way.

Thanks.

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();
}

Sorting the files is taking you O(nlogn) time. If all you need is the most recently created, it would be faster to just scan through the files and find the most recent---O(n).

I reckon your best chance is to consider creating a Win32 API call- this may or may not be faster, but it might be worth investigating. See WIN32_FILE_ATTRIBUTE_DATA Structure to do this.

This gets the FileInfo, or null if there are no files, without sorting:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM