Example #1
0
 private void determineFilesLength(FileInfo[] files, FileCounterContainer fileCounter)
 {
     // Check file length to count them by length.
     if (files != null)
     {
         // Synchronize threads.
         lock (sync)
         {
             // Check files size, count them by category.
             foreach (FileInfo fi in files)
             {
                 if (fi.Length <= Mb10)
                 {
                     fileCounter.FileUnder10MbCounter++;
                 }
                 if (fi.Length > Mb10 && fi.Length <= Mb50)
                 {
                     fileCounter.File10To50MbCounter++;
                 }
                 if (fi.Length >= Mb100)
                 {
                     fileCounter.FileOver100MbCounter++;
                 }
             }
         }
     }
 }
Example #2
0
        private FileCounterContainer countFiles(string root)
        {
            FileCounterContainer fc      = new FileCounterContainer();
            DirectoryInfo        rootDir = new DirectoryInfo(root);

            walkDirectoryTree(rootDir, fc);

            return(fc);
        }
Example #3
0
        private FileCounterContainer countAllFiles()
        {
            FileCounterContainer fc = new FileCounterContainer();

            // To search in the entire host.
            string[] drives = Environment.GetLogicalDrives();

            Parallel.ForEach(drives, d =>
            {
                DriveInfo di          = new DriveInfo(d);
                DirectoryInfo rootDir = di.RootDirectory;
                walkDirectoryTree(rootDir, fc);
            });

            return(fc);
        }
Example #4
0
        private void walkDirectoryTree(DirectoryInfo root, FileCounterContainer fileCounter)
        {
            FileInfo[]            files   = null;
            DirectoryInfo[]       subDirs = null;
            FolderContentsGrabber fcg     = new FolderContentsGrabber();

            files = fcg.GetFilesFromDirectory(root);
            determineFilesLength(files, fileCounter);
            subDirs = fcg.GetSubdirectories(root);

            // Recursive call.
            if (subDirs != null)
            {
                Parallel.ForEach(subDirs, sd =>
                {
                    walkDirectoryTree(sd, fileCounter);
                });
            }
        }