static void TraverseFilesAndFolders(string path, Folder folder) { try { foreach (var fileName in Directory.GetFiles(path)) { int fileSize = (int)(new FileInfo(fileName)).Length; File file = new File(fileName, fileSize); folder.Files.Add(file); } foreach (var directoryName in Directory.GetDirectories(path)) { folder.ChildFolders.Add(new Folder(directoryName)); TraverseFilesAndFolders(directoryName, folder.ChildFolders[folder.ChildFolders.Count - 1]); } } catch (UnauthorizedAccessException e) { Console.WriteLine(e.Message); } }
static void Main() { Folder root = new Folder(StartDirectory); TraverseFilesAndFolders(StartDirectory, root); Console.WriteLine("Size: {0}", root.CalculateSize()); }