private void AddFilesToFolder(Folder root, string[] files) { List<File> currentDirectoryFiles = new List<File>(); foreach (string file in files) { FileInfo info = new FileInfo(file); long size = info.Length; File currentFile = new File(file.ToString(), size); currentDirectoryFiles.Add(currentFile); } root.Files = currentDirectoryFiles.ToArray(); }
public void CalculateFolderSize(Folder folder, ref long sum) { if (folder == null) { throw new ArgumentNullException("Folder cannot be null!"); } for (int i = 0; i < folder.Files.Length; i++) { if (folder.Files[i] != null) { sum += folder.Files[i].Size; } } for (int i = 0; i < folder.ChildFoldersCount; i++) { Folder currentFolder = folder.GetChildFolderAtIndex(i); CalculateFolderSize(currentFolder, ref sum); } }
private void AddSubfoldersToFolder(Folder root, IEnumerable<string> folders) { List<Folder> subfolders = new List<Folder>(); foreach (var folder in folders) { Folder currentFolder = new Folder(folder); subfolders.Add(currentFolder); } root.ChildFolders = subfolders.ToArray(); }
public FolderHierarchy(Folder root) { this.Root = PopulateFileTree(root); }
private Folder PopulateFileTree(Folder root) { string[] files = Directory.GetFiles(root.Name); IEnumerable<string> folders = Directory.EnumerateDirectories(root.Name); AddFilesToFolder(root, files); AddSubfoldersToFolder(root, folders); for (int i = 0; i < root.ChildFoldersCount; i++) { try { root.ChildFolders[i] = PopulateFileTree(root.GetChildFolderAtIndex(i)); } catch (UnauthorizedAccessException) { Console.WriteLine("{0} cannot be accessed!", root.GetChildFolderAtIndex(i)); } } return root; }
private Folder FindFolder(Folder start, string path) { if (path == null) { throw new ArgumentNullException("Path cannot be null"); } if (start.Name == path) { return start; } for (int i = 0; i < start.ChildFoldersCount; i++) { Folder currentFolder = start.GetChildFolderAtIndex(i); FindFolder(currentFolder, path); } throw new ArgumentException("Folder not found in tree hierarchy!"); }