示例#1
0
        static long GetFolderSize(Folder folder)
        {
            var currentDirFilesSize = folder.Files.Sum(f => f.Size);
            long folderSize = currentDirFilesSize;
            foreach (var childFolder in folder.ChildFolders)
            {
                folderSize += GetFolderSize(childFolder);
            }

            return folderSize;
        }
示例#2
0
        private static Folder[] GetFoldersInDir(string path)
        {
            var directoryInfo = new DirectoryInfo(path).GetDirectories();
            List<Folder> folders = new List<Folder>();
            foreach (var dir in directoryInfo)
            {
                string subFolderPath = path + "\\" + dir.Name;
                var currentDirInfo = new DirectoryInfo(subFolderPath);
                Folder currentFolder = new Folder(currentDirInfo.Name, GetFilesInDir(subFolderPath), GetFoldersInDir(subFolderPath));
                folders.Add(currentFolder);
            }

            return folders.ToArray();
        }
示例#3
0
        static void PrintDirectoryTree(Folder[] tree)
        {
            foreach (var folder in tree)
            {
                Console.WriteLine("> " + folder.Name + " [" + GetFolderSize(folder)/1000 + "kb]");

                foreach (var file in folder.Files)
                {
                    Console.WriteLine("--- {0} - {1} kb", file.Name, file.Size / 1000);
                }

                foreach (Folder subfolder in folder.ChildFolders)
                {
                    Folder[] tempFolder = {subfolder};
                    PrintDirectoryTree(tempFolder);
                }
            }
        }
示例#4
0
 public Folder(string name, File[] files, Folder[] subFolders)
 {
     this.Name = name;
     this.Files = files;
     this.ChildFolders = subFolders;
 }