玄関へお回り下さい。
指定フォルダー以下(サブフォルダー内含む)の全ファイルサイズを取得する (2個)  (SNo.026)

1.指定フォルダー以下の全ファイルサイズを取得(FileSystemObject オブジェクトを使って)
2.指定フォルダー以下の全ファイルサイズを取得(.NETのFileInfoクラス等を使って)

Visual Basic .NET での FileSystemObject オブジェクト の使用方法
使用コントロール Button1  Label1  
その他条件 WindowsXP(Vista) Visual Basic 2005(VB2008)
[プロジェクト]→[参照の追加]で Microsoft Scripting Runtime を選択して追加しておいて下さい。 
1.指定フォルダー以下の全ファイルサイズを取得(FileSystemObject オブジェクトを使って)
   (FileSystemObject オブジェクト の使用方法 を参照の事)

Private Sub Button1_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button1.Click
'指定フォルダー以下(サブフォルダー内含む)の全ファイルサイズを取得する
    'FileSystemObject オブジェクト の 
    'Folder オブジェクト の Size プロパティ で取得
    Dim Fso As New Scripting.FileSystemObject
    Dim fd As Scripting.Folder = Fso.GetFolder("../../")

    Debug.WriteLine(fd.Size)                '結果 5,252,524
    'エクスプローラーのフォルダーのプロパティの
    '全般のところで表示している サイズ            5,252,524 

    'COMオブジェクトの解放
    System.Runtime.InteropServices.Marshal.ReleaseComObject(fd)
    System.Runtime.InteropServices.Marshal.ReleaseComObject(Fso)
End Sub

上記と同じ事をVB.NET の Framework の機能で実現しようとすると下記のように少し複雑になります。
(但し、他の便利な方法が有るかも知れません。)
2.指定フォルダー以下の全ファイルサイズを取得(.NETのFileInfoクラス等を使って)

Public Shared Function GetDirFileSize(ByVal d As System.IO.DirectoryInfo) As Long
'指定フォルダー以下のファイルサイズを取得する関数
'エクスプローラーのフォルダーのプロパティの全般のところで表示しているファイルサイズと同じ
    Dim fSize As Long = 0
    Dim fis As System.IO.FileInfo() = d.GetFiles()
    Dim fi As System.IO.FileInfo
    'フォルダー内のファイルサイズを取得
    For Each fi In fis
        fSize += fi.Length
    Next fi
    Dim dis As System.IO.DirectoryInfo() = d.GetDirectories()
    Dim di As System.IO.DirectoryInfo
    'サブフォルダー内のファイルサイズを合計する
    For Each di In dis
        fSize += GetDirFileSize(di)
    Next di
    Return fSize
End Function

上記関数の使用例

Private Sub Button2_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button2.Click
'指定フォルダー以下(サブフォルダー内含む)の全ファイルサイズを取得する
    Dim di As System.IO.DirectoryInfo = New System.IO.DirectoryInfo("../../")
    'ファイルサイズを取得
    Dim sumFile As Long = GetDirFileSize(di)
    Debug.WriteLine(sumFile.ToString("#,###") & " バイトです。")
                                            '結果  5,252,524 バイトです。
End Sub

Visual Basic .NET での FileSystemObject オブジェクト の使用方法
FileSystemObject オブジェクトは Visual Basic .NET でもこれまでと同様に使用できます。
Visual Basic .NET には無い機能や簡単な操作で取得できるプロパティ等が用意されていて結構便利です、Visual Basic .NET でFileSystemObject オブジェクトを使用するには、Microsoft Scripting Runtime タイプライブラリへの参照を追加する必要があります。

上記の詳しい記事は、 Visual Basic .NET の FileSystemObject を参照願います。

Microsoft Scripting Runtime タイプライブラリへの参照を追加するには
1.[プロジェクト] メニューの [参照の追加] をクリックします。
2.[COM] タブで [Microsoft Scripting Runtime] を選択して [選択] をクリックし、[OK] をクリックします。
  オブジェクトブラウザーで、Interop.Scripting ノードに FSO が表示されます。
後は、上記や FileSystemObject オブジェクトの詳しい使用例は、VB6.0の方にサンプルがありますのでそれらを参考にして下さい。





2004/04/26
2005/09/11


VBレスキュー(花ちゃん)
VB.NET2003  VB2005