フォルダの合計ファイルサイズを取得する
スポンサーリンク
VB6 では、FileSystemObject (FSO) から Folder オブジェクトを生成します。そして、Files プロパティから File オブジェクトを列挙し、Size プロパティを合計します。サブディレクトリは、SubFolders プロパティから列挙し、再帰呼び出しをすることで対処します。
FileSystemObject を使用する場合は、[プロジェクト] メニューの [参照設定] を選択して「Microsoft Scripting Runtime」にチェックを付けてください。
サンプルコード
以下にサンプルコードを示します。
VB6.0 以前
' ---------------------------------------------------------------------------- ' @Summary 指定したディレクトリの合計ファイルサイズを取得します。 ' @Param stDirPath 合計ファイルサイズを求めるディレクトリのパス。 ' @Returns ディレクトリの合計ファイルサイズ。 ' ---------------------------------------------------------------------------- Public Function GetDirectoryFileSize(ByVal stDirPath As String) As Long ' FileSystemObject (FSO) の新しいインスタンスを生成する Dim cFso As New FileSystemObject Set cFso = New FileSystemObject ' 処理対象となる Folder オブジェクトを取得する Dim cRootFolder As Folder Set cRootFolder = cFso.GetFolder(stDirPath) ' 不要になった時点で参照を解放する (Terminate イベントを早めに起こす) Set cFso = Nothing Dim lTotalSize As Long Dim cFile As File ' ディレクトリ内のすべてのファイルサイズを加算する For Each cFile In cRootFolder.Files lTotalSize = lTotalSize + cFile.Size Next cFile ' 不要になった時点で参照を解放する (Terminate イベントを早めに起こす) Set cFile = Nothing Dim cSubFolder As Folder ' サブディレクトリ内のすべてのファイルサイズを加算する (再帰) For Each cSubFolder In cRootFolder.SubFolders lTotalSize = lTotalSize + GetDirectoryFileSize(cSubFolder.Path) Next cSubFolder ' 不要になった時点で参照を解放する (Terminate イベントを早めに起こす) Set cRootFolder = Nothing Set cSubFolder = Nothing ' 合計ファイルサイズを返す GetDirectoryFileSize = lTotalSize End Function
使用例は以下のようになります。
VB6.0 以前
' 合計ファイルサイズを格納する変数を宣言する Dim lTotalFileSize As Long ' 合計ファイルサイズを取得する lTotalFileSize = GetDirectoryFileSize("C:\Hoge\") ' 取得した合計ファイルサイズを表示する MessageBox.Show(CStr(lTotalSize) & " バイト")
関連するリファレンス
準備中です。