The DirectoryInfo class does not provide any property that returns size information. However, you can easily calculate the size of all files contained in a directory using the FileInfo.Length property.
Here's a method that uses this technique and optionally examines contained directories recursively:
using System; using System.IO; public class FileSystemUtil { public static long CalculateDirectorySize(DirectoryInfo directory, bool includeSubdirectories) { long totalSize = 0; // Examine all contained files. FileInfo[] files = directory.GetFiles(); foreach (FileInfo file in files) { totalSize += file.Length; } // Examine all contained directories. if (includeSubdirectories) { DirectoryInfo[] dirs = directory.GetDirectories(); foreach (DirectoryInfo dir in dirs) { totalSize += CalculateDirectorySize(dir, true); } } return totalSize; } }
Here's a simple test application:
using System; using System.IO; public class CalculateDirSize { private static void Main(string[] args) { if (args.Length == 0) { Console.WriteLine("Please supply a directory path."); return; } DirectoryInfo dir = new DirectoryInfo(args[0]); Console.WriteLine("Total size: " + FileSystemUtil.CalculateDirectorySize(dir, true).ToString() + " bytes."); Console.ReadLine(); } }
No comments:
Post a Comment