static void Main() { Folder rootFolder = new Folder(@"D:\Books"); BuildFolderTree(rootFolder); Console.WriteLine("Folder: {0}\nSize: {1} bytes", rootFolder, GetFolderSize(rootFolder)); }
public static long GetFolderSize(Folder rootFolder) { long childFilesSize = 0; if (rootFolder == null) return 0; foreach (var folder in rootFolder.ChildFolders) { childFilesSize += GetFolderSize(folder); } return childFilesSize + rootFolder.Files.Sum(f => f.Size); }
private static void BuildFolderTree(Folder rootFolder) { var childrenFolders = new DirectoryInfo(rootFolder.Name).GetDirectories().ToList(); var childrenFiles = new DirectoryInfo(rootFolder.Name).GetFiles().ToList(); foreach (var file in childrenFiles) { var currFile = new File(file.FullName, file.Length); rootFolder.Files.Add(currFile); } foreach (var childFolder in childrenFolders) { var currFolder = new Folder(childFolder.FullName); rootFolder.ChildFolders.Add(currFolder); BuildFolderTree(currFolder); } }