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