おぎの部屋

気になることを徒然に...備忘録にも...

フォルダサイズ取得 サイズ変換 C#

ソースファイル

実行結果

フォルダサイズ
14458579823

フォルダサイズ カンマ表示
14,458,579,823

フォルダサイズ サイズ変換
13.47 GB

フォルダ一覧サイズ表示(サイズ変換:無 形表示:無)

2019/12/19  23:08:09     97,978,208 Test1
2019/12/25  03:52:33 11,359,892,803 Test2
2019/12/19  23:10:20  2,246,219,981 Test3
2020/02/02  04:39:59              0 Test4
2019/12/26  12:41:12    753,614,529 Test5
2020/03/07  19:14:56        874,302 Test6

フォルダ一覧サイズ表示(サイズ変換:有 形表示:有)

2019/12/19  23:08:09      93.44 MB Test1
2019/12/25  03:52:33      10.58 GB Test2
2019/12/19  23:10:20       2.09 GB Test3
2020/02/02  04:39:59       0.00 B  Test4
2019/12/26  12:41:12     718.70 MB Test5
2020/03/07  19:14:56     853.81 KB Test6

フォルダ一覧サイズ表示
カスタム指定子「,」を使った簡易サイズ変換[#,0,,]

2019/12/19  23:08:09             98 MB Test1
2019/12/25  03:52:33         11,360 MB Test2
2019/12/19  23:10:20          2,246 MB Test3
2020/02/02  04:39:59              0 MB Test4
2019/12/26  12:41:12            754 MB Test5
2020/03/07  19:14:56              1 MB Test6

解説

フォルダを指定してフォルダサイズを取得し、サイズを変換して型付きの表示に変換しています。
 GetDirectoryFileSize ・・・ フォルダサイズ取得
 ToHumanReadableSize ・・・ サイズ変換

書式設定を使ってカンマ区切りや小数点の表示しています。
 例)",10:#,0.00"
   ,10 ・・・ 桁数指定です。カンマで区切って桁数を指定しています。
        プラスは右寄せ、マイナスは左寄せ。
   #,0.00 ・・・ 桁区切りを指定して小数点第2位まで表示させています。
          123456.78 -> 123,456.78
          12.3 -> 12.30

サイズ変換で「TB」など必要になれば、

ToHumanReadableSizeメソッド 
var unit = new[] { "B ", "KB", "MB", "GB" };   
        ↓  
var unit = new[] { "B ", "KB", "MB", "GB", "TB" };   

のように配列を追加していけば対応出来ると思います。

ファイルサイズなど数字を表示するときにカンマ表示など書式の設定方法など調べたりすることが多かったので少しまとめようと思いました。
サンプルではコマンドのDirの表示形式にしています。

フォルダサイズ取得など参考先のコードをほとんどそのまま使わせてもらっています。本当にありがとうございます。

参考

dobon.net

teratail.com

カスタム数値形式文字列 | Microsoft Docs


開発環境 テスト環境

Windows10 Pro(64bit)
VisualStadio Community 2019
.Net Freamework 4.8
C#


ogidesu2k18.hatenablog.com

ogidesu2k18.hatenablog.com