title: What's the best way to calculate the size of a directory in .NET?
body: <p>I've written the following routine to manually traverse through a directory and calculate its size in C#/.NET:</p>
  
  <pre>
  <code>
  protected static float CalculateFolderSize(string folder)
  {
      float folderSize = 0.0f;
      try
      {
          //Checks if the path is valid or not
          if (!Directory.Exists(folder))
              return folderSize;
          else
          {
              try
              {
                  foreach (string file in Directory.GetFiles(folder))
                  {
                      if (File.Exists(file))
                      {
                          FileInfo finfo = new FileInfo(file);
                          folderSize += finfo.Length;
                      }
                  }
  
                  foreach (string dir in Directory.GetDirectories(folder))
                      folderSize += CalculateFolderSize(dir);
              }
              catch (NotSupportedException e)
              {
                  Console.WriteLine("Unable to calculate folder size: {0}", e.Message);
              }
          }
      }
      catch (UnauthorizedAccessException e)
      {
          Console.WriteLine("Unable to calculate folder size: {0}", e.Message);
      }
      return folderSize;
  }
  </code>
  </pre>
  
  <p>I have an application which is running this routine repeatedly for a large number of folders.  I'm wondering if there's a more efficient way to calculate the size of a folder with .NET?  I didn't see anything specific in the framework.  Should I be using P/Invoke and a Win32 API?  What's the most efficient way of calculating the size of a folder in .NET?</p>