private static Folder TraverseDirectory(Folder currentFolder) { try { var currentDirectory = new DirectoryInfo(currentFolder.Name); var files = currentDirectory.GetFiles(); var childDirectories = currentDirectory.GetDirectories(); foreach (var file in files) { currentFolder.Files.Add(new File(file.FullName, file.Length)); } foreach (var directory in childDirectories) { currentFolder.ChildFolders.Add(new Folder(directory.FullName)); } foreach (var childFolder in currentFolder.ChildFolders) { TraverseDirectory(childFolder); } return currentFolder; } catch (UnauthorizedAccessException) { Console.WriteLine("You don't have permition to access these files/directories"); throw; } }
static void Main() { // Choose a valid directory on your computer that you have authorized access to: var rootDirectory = new DirectoryInfo("D:\\Install"); var rootFolder = new Folder(rootDirectory.FullName); TraverseDirectory(rootFolder); Console.WriteLine(string.Format( "Folder {0} has size: {1} bytes", rootFolder.Name, CalculateSize(rootFolder))); }
private static long CalculateSize(Folder currentFolder) { long size = 0; foreach (var file in currentFolder.Files) { size += file.Size; } foreach (var childFolder in currentFolder.ChildFolders) { size += CalculateSize(childFolder); } return size; }