VB.NETフォルダの合計ファイルサイズを取得する

スポンサーリンク

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

関連するリファレンス

準備中です。

スポンサーリンク