How to find the most recent file in a directory using .NET, and without looping?
how about something like this...
var directory = new DirectoryInfo("C:\\MyDirectory");
var myFile = (from f in directory.GetFiles()
orderby f.LastWriteTime descending
select f).First();
// or...
var myFile = directory.GetFiles()
.OrderByDescending(f => f.LastWriteTime)
.First();
how to get the newest created file in a directory using only GetFiles in System.IO Namespace in C#
You can do this using the FileInfo
and DirectoryInfo
classes. You will first get all the files in the specified directory and then compare their LastWriteTime to others and thus by comparison you can get the most recently writte or recent file. Here is code for this method.
/// <summary>
/// Returns recently written File from the specified directory.
/// If the directory does not exist or doesn't contain any file, null is returned.
/// </summary>
/// <param name="directoryInfo">Path of the directory that needs to be scanned</param>
/// <returns></returns>
public static string NewestFileofDirectory(string directoryPath )
{
DirectoryInfo directoryInfo = new DirectoryInfo(directoryPath);
if (directoryInfo == null || !directoryInfo.Exists)
return null;
FileInfo[] files = directoryInfo.GetFiles();
DateTime recentWrite = DateTime.MinValue;
FileInfo recentFile = null;
foreach (FileInfo file in files)
{
if (file.LastWriteTime > recentWrite)
{
recentWrite = file.LastWriteTime;
recentFile = file;
}
}
return recentFile.Name;
}
C#: Get the 5 newest (last modified) files from a directory
Here's a general way to do this with LINQ:
Directory.GetFiles(path)
.Select(x => new FileInfo(x))
.OrderByDescending(x => x.LastWriteTime)
.Take(5)
.ToArray()
I suspect this isn't quite what you want, since your code examples seem to be working at different tasks, but in the general case, this would do what the title of your question requests.
C# Reading newest file in directory
Why not use Linq and order by the date?
files.OrderBy(x => x.CreationDate)
Identify the latest file through specific patterns in a directory
Here is another one with bit more steps:
var d=new DirectoryInfo(@"C:\temp\logs");//Main Directory
var files=d.GetFiles("*.txt",SearchOption.AllDirectories);//Get .txt files
var patt=@"error-2016-09-"; //Pattern to search in file name
var matching = files.OrderByDescending(x=>x.CreationTimeUtc)
.Where(f => f.FullName.Contains(patt));
var latest=matching.First();//gets error-2016-09-29.txt
How to choose the last modified file from the directory?
Namespace System.IO
has classes that help you get information about the contents of the filesystem. Together with a little LINQ it's quite easy to do what you need:
// Get the full path of the most recently modified file
var mostRecentlyModified = Directory.GetFiles(@"c:\mydir", "*.log")
.Select(f => new FileInfo(f))
.OrderByDescending(fi => fi.LastWriteTime)
.First()
.FullName;
You do need to be a little careful here (e.g. this will throw if there are no matching files in the specified directory due to .First()
being called on an empty collection), but this is the general idea.
How do I find the two newest file in a directory?
Create a query and then pick out what you need, for example:
var orderedFiles = directory.EnumerateFiles("*.pdf")
.OrderByDescending(f => f.LastWriteTime);
var newestTwo = orderedFiles.Take(2).ToList();
I have used EnumerateFiles
because it doesn't need to load all files into memory.
Directory.GetFiles get today's files only
Try this:
var todayFiles = Directory.GetFiles("path_to_directory")
.Where(x => new FileInfo(x).CreationTime.Date == DateTime.Today.Date);
Related Topics
Can't Get Czech Characters While Generating a PDF
Accessing a Variable from Another Script C#
#If Debug VS. Conditional("Debug")
Unity Game Manager. Script Works Only One Time
Compiler Ambiguous Invocation Error - Anonymous Method and Method Group with Func<> or Action
How to Change Datatype of a Datacolumn in a Datatable
Code for Decoding/Encoding a Modified Base64 Url (In ASP.NET Framework)
What Does Initializecomponent() Do, and How Does It Work in Wpf
How to Serialize a String as Cdata Using Xmlserializer
How to Set Custom JSONserializersettings for JSON.Net in ASP.NET Web API
Allow Windows Service to Interact with Desktop
How to Close a Login Form and Show the Main Form Without My Application Closing