What are special functionalities in Directory class which are not available in DirectoryInfo class and vice versa?
Directory and DirectoryInfo overlap a lot, but they are designed differently.
- Directory → static utility class (you work with paths as strings)
- DirectoryInfo → instance-based class (you work with a directory object)
👉Most operations exist in both. The main differences are about style, state, and convenience, not unique capabilities.
Functionalities in Directory that DirectoryInfo does NOT have
- Static methods (no object creation)
You don't need to create a DirectoryInfo.
Directory.Delete(@"C:\Temp");
Equivalent with DirectoryInfo:
dir.Create();
Useful when:
- You only need a one-time operation
- You already have path strings
- Current directory management
Directory contains application-level operations.
string current = Directory.GetCurrentDirectory();
DirectoryInfo has no equivalent.
- Logical drive root helper
No equivalent in DirectoryInfo.
Functionalities in DirectoryInfo that Directory does NOT have
- Cached directory metadata (inherits from FileSystemInfo)
You can access properties directly:
Console.WriteLine(dir.CreationTime);
Console.WriteLine(dir.LastWriteTime);
Console.WriteLine(dir.Attributes);
Console.WriteLine(dir.Exists);
Directory has methods for some of these:
Directory.GetCreationTime(path);
But it doesn't hold state.
- Parent directory access
Console.WriteLine(dir.Parent?.Name);
No direct Directory.Parent is available.
- Navigate object hierarchy
DirectoryInfo[] subdirs = dir.GetDirectories();
FileInfo[] files = dir.GetFiles();
You immediately get DirectoryInfo / FileInfo objects.
With Directory:
Only strings are returned.
- Rename using MoveTo()
dir.MoveTo(@"C:\New");
Directory.Move() exists too, but instance style can feel cleaner.
Example where DirectoryInfo becomes nicer
The following LINQ example repeatedly creates DirectoryInfo.
Instead of:
.Select(x => new DirectoryInfo(x))
Prefer:
foreach (DirectoryInfo d in dir.GetDirectories())
{
Console.WriteLine(d.Name);
}
No repeated object creation.
Rule of thumb
| Use | Prefer |
| One quick operation | Directory |
| Multiple operations on same folder | DirectoryInfo |
| Need metadata (Parent, CreationTime) | DirectoryInfo |
| Need current working directory | Directory |
So DirectoryInfo isn't more powerful—it mainly provides an object-oriented wrapper over directory operations plus metadata caching through FileSystemInfo.
No comments:
Post a Comment