La seguente function in VB.NET permette di ricavare, in maniera ricorsiva, l'occupazione su disco (in Kbytes) di una directory.
La variabile Path contiene il percorso della directory (senza il carattere terminatore "\").
La funzione ritorna lo spazio occupato oppure -1 se si è verificato un errore
Il costrutto try/catch è utilizzato per garantire che la funzione non vada mai in errore.
Public Function GetDirSize(ByVal Path As System.String) As Int64
Try
Dim dirdata() As System.IO.DirectoryInfo
Dim filedata() As System.IO.FileInfo
Dim file As System.IO.FileInfo
Dim dimension As Int64 = 0
Dim dir As System.IO.DirectoryInfo = New System.IO.DirectoryInfo(Path)
' Scansione dei file della directory
filedata = dir.GetFiles("*.*")
For Each file In filedata
dimension = dimension + file.Length
Next
' Scansione delle sottodirectory
dirdata = dir.GetDirectories("*")
For Each dir In dirdata
dimension = dimension + GetDirSize(dir.FullName)
Next
Return dimension
Catch
Return -1
End Try
End Function
Vengono utilizzate le classi DirectoryInfo e FileInfo e non le classi Directory e File poichè le prime non eseguono le autorizzazioni di sicurezza ogni volta che viene utilizzato un metodo (come invece fanno le seconde) migliorando le prestazioni.