VB.NET : Recuperare l'occupazione di una directory
La seguente function in VB.NET permette di ricavare, in maniera ricorsiva, l'occupazione su disco 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
Dim retval as Int64 = 0
Dim dirdata() As System.IO.DirectoryInfo
Dim filedata() As System.IO.FileInfo
Dim file As System.IO.FileInfo
Dim dimension As Int64 = 0
Try
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 = GetDirSize(dir.FullName)
if dimension<>-1 then retval+=dimension
Next
retval=dimension
Catch
retval=-1
End Try
Return retval
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.
Nessun commento:
Posta un commento