Calculate the Size of a Folder/Directory using .NET 4.0   
   
     .NET 4.0 introduces 7 New methods to Enumerate Directory and Files in .NET 4.0.
    All these methods return Enumerable Collections (IEnumerable<T>), which perform better   than  arrays.
    We will be using the DirectoryInfo.EnumerateDirectories and DirectoryInfo.
    EnumerateFiles in this sample which returns an enumerable
    collection of Directory and File information respectively.
   
    Here's how to calculate the size of a folder or directory using .NET 4.0 and LINQ.
    The code also calculates the size of all sub-directories.
   
    Calculate the Size of a Folder/Directory using C#
   
    using System;
    using System.Linq;
    using System.IO;
   
    namespace DirectoryInfo
    {
      class Program
      {
        static void Main(string[] args)
        {
          DirectoryInfo dInfo = new DirectoryInfo(@"Your folder path here");
          // set bool parameter to false if you
          // do not want to include subdirectories.
          long sizeOfDir = DirectorySize(dInfo, true);
   
          Console.WriteLine("Directory size in Bytes : " +
          "{0:N0} Bytes", sizeOfDir);
          Console.WriteLine("Directory size in KB : " +
          "{0:N2} KB", ((double)sizeOfDir) / 1024);
          Console.WriteLine("Directory size in MB : " +
          "{0:N2} MB", ((double)sizeOfDir) / (1024 * 1024));
   
          Console.ReadLine();
        }
   
        static long DirectorySize(DirectoryInfo dInfo, bool includeSubDir)
        {
           // Enumerate all the files
           long totalSize = dInfo.EnumerateFiles()
                        .Sum(file => file.Length);
   
           // If Subdirectories are to be included
           if (includeSubDir)
           {
              // Enumerate all sub-directories
              totalSize += dInfo.EnumerateDirectories()
                       .Sum(dir => DirectorySize(dir, true));
           }
           return totalSize;
        }
      }
    }

0 comments

Related Posts Plugin for WordPress, Blogger...