フォルダの合計ファイルサイズを取得する
スポンサーリンク
ファイルサイズは、System.IO.FileInfo クラスの Length プロパティから取得できます。フォルダ内の合計ファイルサイズを求める場合は、これらのファイルサイズを合計すれば良いわけです。
以下は、その処理を関数化したものです。引数には、対象ディレクトリのパスと、DirectoryInfo と、どちらでも指定できるようにオーバーロードしています。
GetFiles メソッドで、パターンマッチング (ワイルドカード) が使用できますので、そのように拡張しても良いでしょう。つまり、ある特定の条件のファイルだけを合計することが可能になります。
サンプルコード
以下にサンプルコードを示します。
C# 全般
/// ---------------------------------------------------------------------------- /// <summary> /// 指定したディレクトリの合計ファイルサイズを取得します。</summary> /// <param name="stDirPath"> /// 合計ファイルサイズを求めるディレクトリのパス。</param> /// <returns> /// ディレクトリの合計ファイルサイズ。</returns> /// ---------------------------------------------------------------------------- public static long GetDirectoryFileSize(string stDirPath) { return GetDirectoryFileSize(new System.IO.DirectoryInfo(stDirPath)); } /// ---------------------------------------------------------------------------- /// <summary> /// 指定したディレクトリの合計ファイルサイズを取得します。</summary> /// <param name="hDirectoryInfo"> /// 合計ファイルサイズを求める対象の DirectoryInfo。</param> /// <returns> /// ディレクトリの合計ファイルサイズ。</returns> /// ---------------------------------------------------------------------------- public static long GetDirectoryFileSize(System.IO.DirectoryInfo hDirectoryInfo) { long lTotalSize = 0; // ディレクトリ内のすべてのファイルサイズを加算する foreach (System.IO.FileInfo cFileInfo in hDirectoryInfo.GetFiles()) { lTotalSize += cFileInfo.Length; } // サブディレクトリ内のすべてのファイルサイズを加算する (再帰) foreach (System.IO.DirectoryInfo hDirInfo in hDirectoryInfo.GetDirectories()) { lTotalSize += GetDirectoryFileSize(hDirInfo); } // 合計ファイルサイズを返す return lTotalSize; }
使用例は以下のようになります。
C# 全般
// 合計ファイルサイズを取得する long lTotalFileSize = GetDirectoryFileSize(@"C:\Hoge\"); // 取得した合計ファイルサイズを表示する MessageBox.Show(lTotalSize.ToString() + " バイト");
関連するリファレンス
準備中です。