C#フォルダの合計ファイルサイズを取得する

スポンサーリンク

ファイルサイズは、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() + " バイト");

関連するリファレンス

準備中です。

スポンサーリンク