Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I Get Folder Size in C#? [duplicate]

Possible Duplicate:
How do I get a directory size (files in the directory) in C#?

In vbscript, it's incredibly simple to get the folder size in GB or MB:

Set oFSO = CreateObject("Scripting.FileSystemObject")
Dim fSize = CInt((oFSO.GetFolder(path).Size / 1024) / 1024)
WScript.Echo fSize

In C#, with all my searches, all I can come up with are long, convoluted, recursive searches for every file size in all subfolders, then add them all up at the end.

Is there no other way?

like image 837
Nathan McKaskle Avatar asked Aug 28 '12 19:08

Nathan McKaskle


1 Answers

How about this:

private static long GetDirectorySize(string folderPath)
{
    DirectoryInfo di = new DirectoryInfo(folderPath);
    return di.EnumerateFiles("*", SearchOption.AllDirectories).Sum(fi => fi.Length);
}

from here.

This will give you the size in bytes; you will have to "prettify" that into GBs or MBs.

NOTE: This only works in .NET 4+.

EDIT: Changed the wildcard search from "*.*" to "*" as per the comments in the thread to which I linked. This should extend its usability to other OSes (if using Mono, for example).

like image 85
Cᴏʀʏ Avatar answered Oct 05 '22 15:10

Cᴏʀʏ