Feedback

VB - Ordnergröße ermitteln

Veröffentlicht von am 11/26/2006
(4 Bewertungen)
Diese Funktion ermittelt die Größe eines Ordners und gibt diese in Byte zurück. Dabei werden die Unterordner natürlich mit einbezogen
Public Class FolderSize
    Private Shared FolderSize As Long = 0

    ''' <summary>
    ''' Diese Funktion ermittelt die Größe eines Ordners und gibt diese in Byte zurück
    ''' </summary>
    ''' <param name="Root">Der Ordner dessen Größe ausgelesen werden soll</param>
    Public Shared Function GetFolderSize(ByVal Root As String) As Long
        FolderSize = 0
        SeekFiles(Root)
        Return FolderSize
    End Function

    Private Shared Sub SeekFiles(ByVal Root As String)
        Dim Files() As String = System.IO.Directory.GetFiles(Root)
        Dim Folders() As String = System.IO.Directory.GetDirectories(Root)

        For i As Integer = 0 To Files.Length - 1
            FolderSize += FileLen(Files(i))
        Next

        For i As Integer = 0 To Folders.Length - 1
            SeekFiles(Folders(i))
        Next
    End Sub
End Class
Abgelegt unter Ordner, Größe.

4 Kommentare zum Snippet

Thomas G, Liesner schrieb am 11/26/2006:
Dank "static" kann man die Funktion genau einmal pro Programmlauf verwenden - sehr unbrauchbar.
Tim Hartwig schrieb am 11/26/2006:
Ich hatte die Funktion erst neu geschrieben und habe das ganz vergessen. Ich werde es dann in einer Klasse kapseln.
Tim Hartwig schrieb am 11/26/2006:
Aber das ist typisch, gute Snippets werden selten bewertet aber sobald irgendeiner einen "schlechten" Snippet findet wo er sofort einen Fehler entdeckt, dann wird der Snippet SOFORT schlecht bewertet!
dognose schrieb am 6/17/2008:
[Dank "static" kann man die Funktion genau einmal pro Programmlauf verwenden - sehr unbrauchbar.]

Mein Gott DU bist vielleicht ne "Mimi" - EIN WENIG selbst programmieren kann man wohl noch , oder ?!

So gehts immer:
Private Function GetFolderSize(ByVal folder As String) As Long
Dim FolderSize As Long = 0
FolderSize = SeekFiles(folder)
Return FolderSize
End Function

Private Function SeekFiles(ByVal folder As String)
Dim Foldersize As Long = 0
Dim Files() As String = System.IO.Directory.GetFiles(folder)
Dim Folders() As String = System.IO.Directory.GetDirectories(folder)

For i As Integer = 0 To Files.Length - 1
FolderSize += FileLen(Files(i))
Next

For i As Integer = 0 To Folders.Length - 1
Foldersize += SeekFiles(Folders(i))
Next

Return Foldersize
End Function


von mir ne stehende Unendlich :-D
 

Logge dich ein, um hier zu kommentieren!