J#(Java)フォルダの合計ファイルサイズを取得する

スポンサーリンク

ファイルサイズは、System.IO.FileInfo クラスの Length プロパティから取得できます。フォルダ内の合計ファイルサイズを求める場合は、これらのファイルサイズを合計すれば良いわけです。

以下は、その処理を関数化したものです。引数には、対象ディレクトリのパスと、DirectoryInfo と、どちらでも指定できるようにオーバーロードしています。

GetFiles メソッドで、パターンマッチング (ワイルドカード) が使用できますので、そのように拡張しても良いでしょう。つまり、ある特定の条件のファイルだけを合計することが可能になります。

サンプルコード

以下にサンプルコードを示します。

J# 全般
/***************************************************************************
 *      指定したディレクトリの合計ファイルサイズを取得します。
 *
 * @param   stDirPath       合計ファイルサイズを求めるディレクトリのパス。
 * @return                  ディレクトリの合計ファイルサイズ。
 ***************************************************************************/
public static final long GetDirectoryFileSize(final String stDirPath) {
    return GetDirectoryFileSize(new System.IO.DirectoryInfo(stDirPath));
}

/***************************************************************************
 *      指定したディレクトリの合計ファイルサイズを取得します。
 *
 * @param   hDirectoryInfo  合計ファイルサイズを求める対象の DirectoryInfo。
 * @return                  ディレクトリの合計ファイルサイズ。
 ***************************************************************************/
public static final long GetDirectoryFileSize(final System.IO.DirectoryInfo hDirectoryInfo) {
    long lTotalSize = 0;

    // ディレクトリ内のすべてのファイルサイズを加算する
    final System.IO.FileInfo[] cFileInfos = hDirectoryInfo.GetFiles();
    for (int i = 0; i <= cFileInfos.length - 1; i++) {
        lTotalSize += cFileInfos[i].get_Length();
    }

    // サブディレクトリ内のすべてのファイルサイズを加算する (再帰)
    final System.IO.DirectoryInfo[] hDirInfos = hDirectoryInfo.GetDirectories();
    for (int i = 0; i <= cFileInfos.length - 1; i++) {
        lTotalSize += GetDirectoryFileSize(hDirInfos[i]);
    }

    // 合計ファイルサイズを返す
    return lTotalSize;
}

使用例は以下のようになります。

J# 全般
    // 合計ファイルサイズを取得する
    long lTotalFileSize = GetDirectoryFileSize("C:\\Hoge\\");

    // 取得した合計ファイルサイズを表示する
    MessageBox.Show(System.Convert.ToString(lTotalSize) + " バイト");

関連するリファレンス

準備中です。

スポンサーリンク