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) | |
|---|---|---|
| Usage | One-off operations | Several operations on the same file/folder |
| Metadata | Separate calls (File.GetLastWriteTime) | Properties (Length, CreationTime, Attributes) |
| Refresh | Always current | Cached — call Refresh() for fresh values |