Roadmap › C# Language — Basics to Advanced › Module: Files and Streams
Lessons in this course (38)

32. FileInfo and DirectoryInfo

BasicMediumLesson 32 of 38

FileInfo / DirectoryInfo are instance classes: create one object for a path and use its properties and methods repeatedly (security checks happen once, and you get metadata).

csharp
var info = new FileInfo(@"C:\data\orders.csv");
if (info.Exists)
{
    Console.WriteLine($"{info.Name} {info.Length / 1024} KB, modified {info.LastWriteTime:g}");
    Console.WriteLine(info.Extension);          // .csv
    Console.WriteLine(info.DirectoryName);      // C:\data
    info.CopyTo(@"C:\archive\orders.csv", overwrite: true);
    using StreamReader reader = info.OpenText();
    Console.WriteLine(reader.ReadLine());
}

var dir = new DirectoryInfo(@"C:\data");
foreach (FileInfo f in dir.GetFiles("*.log").Where(f => f.LastWriteTime < DateTime.Now.AddDays(-30)))
    f.Delete();                                 // clean up logs older than 30 days
DirectoryInfo sub = dir.CreateSubdirectory("2026");
File / Directory (static)FileInfo / DirectoryInfo (instance)
UsageOne-off operationsSeveral operations on the same file/folder
MetadataSeparate calls (File.GetLastWriteTime)Properties (Length, CreationTime, Attributes)
RefreshAlways currentCached — call Refresh() for fresh values