Directory
sizeA C# method can calculate the total size of a directory. It considers each file. It returns the total bytes of all files.
This C# method is useful for compression or file transfers. We determine the size of a directory. We can detect changes in directory sizes.
We can use the Directory
class
and a foreach
-loop. We write our own custom method—we sum the length of each file, returning the total size in bytes.
Directory.GetFiles()
. This gets all the files matching the "filter" at the directory in the path specified.foreach
-loop looks through each file name and then creates a new FileInfo
object.FileInfo
allows us to easily find certain informational properties of the file.using System; using System.IO; class Program { static void Main() { var size = GetDirectorySize(@"programs\"); Console.WriteLine(size); } static long GetDirectorySize(string path) { // Get array of all file names. string[] files = Directory.GetFiles(path, "*.*"); // Calculate total bytes of all files in a loop. long totalBytes = 0; foreach (string name in files) { // Use FileInfo to get length of each file. FileInfo info = new FileInfo(name); totalBytes += info.Length; } // Return total size return totalBytes; } }382627
To get files in nested folders, use the SearchOption.AllDirectories
argument. This returns an array with files from subdirectories.
SearchOption.AllDirectories "*.*" "*.png"
We measured directory sizes in bytes. We can use a combination of Directory
methods and FileInfo
objects to sum the bytes.