指定フォルダー以下(サブフォルダー内含む)の全ファイルサイズを取得する (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 タイプライブラリへの参照を追加するには |