static void Main(string[] args) { Console.WriteLine("C:\\Windows directoy"); Folder masterFolder = new Folder(@"C:\Windows"); Folder copiedFileSystem = FolderUtils.CopyFileSystem(ref masterFolder); Console.WriteLine(); Console.WriteLine("Cloning of C:\\Windows is finished."); Console.Write("Choose a sub folder to check it's size: "); string subFolder = Console.ReadLine(); decimal folderSize = FolderUtils.FindFolder(masterFolder, subFolder).GetSize(); Console.WriteLine("The folder size is {0:0.00}mb", folderSize.ToMegabytes()); Console.WriteLine(masterFolder.Folders.Count); }
public static Folder FindFolder(Folder folder, string folderName) { if (folder.Name == folderName) { return folder; } Folder findFolder = null; foreach (var child in folder.Folders) { if (findFolder == null) { Folder currentFolder = FindFolder(child, folderName); if (currentFolder != null) { findFolder = currentFolder; } } } return findFolder; }
public static Folder CopyFileSystem(ref Folder directoryToSearch) { try { string[] allFilesInCurrentFolder = Directory.GetFiles(directoryToSearch.Name, "*.*"); //Add the files to the folder for (int i = 0; i < allFilesInCurrentFolder.Length; i++) { long sizeOfNewFile = new FileInfo(allFilesInCurrentFolder[i]).Length; File newFile = new File(allFilesInCurrentFolder[i], sizeOfNewFile); directoryToSearch.AddFile(newFile); } var foldersInCurrentDir = Directory.EnumerateDirectories(directoryToSearch.Name); foreach (var folder in foldersInCurrentDir) { Folder newFolder = new Folder(folder); directoryToSearch.AddFolder(newFolder); CopyFileSystem(ref newFolder); } } catch (UnauthorizedAccessException) { Console.WriteLine("Directory {0} cannot be accessed", directoryToSearch.Name); } catch (NotSupportedException) { Console.WriteLine("Directory {0} does not exist.", directoryToSearch.Name); } return directoryToSearch; }
public void AddFolder(Folder folder) { Folders.Add(folder); }