フォルダの合計ファイルサイズを取得する
スポンサーリンク
ファイルサイズは、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) + " バイト");
関連するリファレンス
準備中です。