teshio
teshio

Reputation:

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

Upvotes: 2

Views: 1190

Answers (4)

Handcraftsman
Handcraftsman

Reputation: 6993

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

Upvotes: 0

RichardOD
RichardOD

Reputation: 29157

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.

Upvotes: 1

Keith Smith
Keith Smith

Reputation: 3676

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).

Upvotes: 5

Related Questions