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);
        }
示例#2
0
        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;
        }
示例#3
0
        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;
        }
示例#4
0
 public void AddFolder(Folder folder)
 {
     Folders.Add(folder);
 }