Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get the newest (last modified) directory [C#]

Tags:

c#

directory

Currently my application uses string[] subdirs = Directory.GetDirectories(path) to get the list of subdirectories, and now I want to extract the path to the latest (last modified) subdirectory in the list.

What is the easiest way to accomplish this? (efficiency is not a major concern - but robustness is)

like image 612
Shaitan00 Avatar asked May 31 '10 04:05

Shaitan00


3 Answers

Non-recursive:

new DirectoryInfo(path).GetDirectories()
                       .OrderByDescending(d=>d.LastWriteTimeUtc).First();

Recursive:

new DirectoryInfo(path).GetDirectories("*", 
    SearchOption.AllDirectories).OrderByDescending(d=>d.LastWriteTimeUtc).First();
like image 70
Matthew Flaschen Avatar answered Nov 19 '22 23:11

Matthew Flaschen


without using LINQ

DateTime lastHigh = new DateTime(1900,1,1);
string highDir;
foreach (string subdir in Directory.GetDirectories(path)){
    DirectoryInfo fi1 = new DirectoryInfo(subdir);
    DateTime created = fi1.LastWriteTime;

    if (created > lastHigh){
        highDir = subdir;
        lastHigh = created;
    }
}
like image 16
Laramie Avatar answered Nov 19 '22 23:11

Laramie


Try this:

string pattern = "*.txt"

var dirInfo = new DirectoryInfo(directory);

var file = (from f in dirInfo.GetFiles(pattern) 
            orderby f.LastWriteTime descending 
            select f).First();

http://zamirsblog.blogspot.com/2012/07/c-find-most-recent-file-in-directory.html

like image 3
Zamir Avatar answered Nov 19 '22 22:11

Zamir