Inspecting the directories on the local PC using C# .NET
January 6, 2015 Leave a comment
In this post we saw how to enumerate all the drives on your Windows machine. Once you have the drive name, such as C:\ you can start digging into it to see what files and folders it contains.
The DirectoryInfo object is the entry point to the exercise:
DirectoryInfo directoryInfo = new DirectoryInfo(@"c:\");
The empty GetDirectories() method will find all subfolders directly under “c:\” i.e. exclude the subfolders within the folders on c:\
DirectoryInfo[] allSubFolders = directoryInfo.GetDirectories(); foreach (DirectoryInfo subFolder in allSubFolders) { Console.WriteLine("Sub directory name: {0}", subFolder.Name); Console.WriteLine("Sub directory creation time: {0}", subFolder.CreationTimeUtc); }
DirectoryInfo has several other properties such as last access time that can be interesting for you.
GetDirectories has two overloads which let you search for a folder. The following will list all subdirectories whose name starts with an “a”:
DirectoryInfo[] searchedFolders = directoryInfo.GetDirectories("a*");
…and this is how you extend the search to all directories under c:\
DirectoryInfo[] searchedFolders = directoryInfo.GetDirectories("a*", SearchOption.AllDirectories);
The search is case-insensitive so this returns all folders starting with “a” and “A”.
You can search for files in much the same way. The file-equivalent class of DirectoryInfo is FileInfo. This is how to list all files available directly within a directory:
FileInfo[] filesInDir = directoryInfo.GetFiles();
GetFiles() also has overloads similar to GetDirectories that enable you to search for files.
Read all posts dedicated to file I/O here.