Example #1
0
        private static void BuildingDirectoriesTree(string path, ref Folder folder)
        {
            DirectoryInfo dir = new DirectoryInfo(path);
            folder = new Folder(dir.Name);

            try
            {
                // Going through all files
                FileInfo[] currentFiles = dir.GetFiles();
                folder.Files = new File[currentFiles.Length];
                for (int i = 0; i < currentFiles.Length; i++)
                {
                    string name = currentFiles[i].Name;
                    long size = currentFiles[i].Length;

                    folder.Files[i] = new File(name, size);
                }

                // Going through all folders
                DirectoryInfo[] currentDirs = dir.GetDirectories();
                folder.Folders = new Folder[currentDirs.Length];
                for (int i = 0; i < currentDirs.Length; i++)
                {
                    string name = currentDirs[i].Name;
                    Folder currentFolder = new Folder(name);
                    BuildingDirectoriesTree(currentDirs[i].FullName, ref currentFolder);
                    folder.Folders[i] = currentFolder;
                }
            }
            catch (UnauthorizedAccessException)
            {
                Console.WriteLine("Cannot access directory {0}!", path);
                return;
            }
        }
Example #2
0
        static void Main()
        {
            string path = @"C:\Program Files";

            // Building the tree
            Folder mainFolder = new Folder("Program Files");
            BuildingDirectoriesTree(path, ref mainFolder);

            // Locating the folder
            string searchedFolder = "Internet Explorer";
            Folder folder = LocateFolder(mainFolder, searchedFolder);

            // Calculating the size of all files
            long fileSizesSum = CalculateFolderFileSizes(folder);
            Console.WriteLine("The sum of file sizes in folder {0} is: {1}", folder.Name, fileSizesSum);
        }
Example #3
0
        private static long CalculateFolderFileSizes(Folder folder)
        {
            long result = 0;

            foreach (var file in folder.Files)
            {
                result += file.Size;
            }

            foreach (var childFolder in folder.Folders)
            {
                result += CalculateFolderFileSizes(childFolder);
            }

            return result;
        }
Example #4
0
        private static Folder LocateFolder(Folder mainFolder, string searchedFolder)
        {
            if (mainFolder.Name == searchedFolder)
            {
                return mainFolder;
            }

            Folder foundFolder = null;
            foreach (var folder in mainFolder.Folders)
            {
                if (foundFolder == null)
                {
                    Folder currentFolder = LocateFolder(folder, searchedFolder);
                    if (currentFolder != null)
                    {
                        foundFolder = currentFolder;
                    }
                }
            }

            return foundFolder;
        }