フォルダのサイズを取得する


フォルダ(ディレクトリ)のサイズ(Byte)を取得

[方針] フォルダサイズを直接取得する関数は用意されていないので,フォルダ内部のファイルサイズを加算して求める.

フォルダ内に入れ子のフォルダがない場合

Hage(string Path) 呼び出し元
string Pathは求めたいフォルダのパス
long FilesSizeにフォルダ内のファイルサイズの合計

GetDirectorySize.cs
    using System.Windows.Forms;//MessageBox用
    using System.IO;
        public static long GetDirectorySize(DirectoryInfo dirInfo) {
            long DirectorySize = 0;
            foreach (FileInfo fi in dirInfo.GetFiles())//フォルダ内の全ファイルを取得
                DirectorySize += fi.Length;//フォルダ内の全ファイルのサイズを加算
            return DirectorySize;
        }
        private void Hage(string Path) {
            long FilesSize = GetDirectorySize(new DirectoryInfo(Path));
            MessageBox.Show("The size of this folder is "+FilesSize.ToString()+" Byte.");
        }

フォルダ内のサブフォルダすべてのサイズを取得したい場合

[方針] サブフォルダのサイズを再帰呼び出しで合算

long FolderSizeにフォルダサイズを格納

GetDirectorySize.cs
    using System.Windows.Forms;//MessageBox用
    using System.IO;
        public static long GetDirectorySize(DirectoryInfo dirInfo) {
            long DirectorySize = 0;
            foreach (FileInfo fi in dirInfo.GetFiles())//フォルダ内の全ファイルを取得
                DirectorySize += fi.Length;//フォルダ内の全ファイルのサイズを加算
            foreach (DirectoryInfo di in dirInfo.GetDirectories())//サブフォルダを取得
                DirectorySize += GetDirectorySize(di);//サブフォルダのサイズを合算
            return DirectorySize;
        }
        private void Hage(string Path) {
            long FolderSize = GetDirectorySize(new DirectoryInfo(Path));
            MessageBox.Show("The size of this folder is "+FolderSize.ToString()+" Byte.");
        }

参照
https://dobon.net/vb/dotnet/file/foldersize.html