Ho bisogno per calcolare la dimensione di directory in VB .NetQual è il modo migliore per calcolare la dimensione di una directory in VB .NET?
so i seguenti 2 metodi
Metodo 1: da MSDN http://msdn.microsoft.com/en-us/library/system.io.directory.aspx
'L'esempio seguente calcola la dimensione di una directory ' e le sue sottodirectory, se presenti, e visualizza la dimensione totale 'in byte.
Imports System
Imports System.IO
Public Class ShowDirSize
Public Shared Function DirSize(ByVal d As DirectoryInfo) As Long
Dim Size As Long = 0
' Add file sizes.
Dim fis As FileInfo() = d.GetFiles()
Dim fi As FileInfo
For Each fi In fis
Size += fi.Length
Next fi
' Add subdirectory sizes.
Dim dis As DirectoryInfo() = d.GetDirectories()
Dim di As DirectoryInfo
For Each di In dis
Size += DirSize(di)
Next di
Return Size
End Function 'DirSize
Public Shared Sub Main(ByVal args() As String)
If args.Length <> 1 Then
Console.WriteLine("You must provide a directory argument at the command line.")
Else
Dim d As New DirectoryInfo(args(0))
Dim dsize As Long = DirSize(d)
Console.WriteLine("The size of {0} and its subdirectories is {1} bytes.", d, dsize)
End If
End Sub 'Main
End Class 'ShowDirSize
Metodo 2: da What's the best way to calculate the size of a directory in .NET?
Dim size As Int64 = (From strFile In My.Computer.FileSystem.GetFiles(strFolder, _
FileIO.SearchOption.SearchAllSubDirectories) _
Select New System.IO.FileInfo(strFile).Length).Sum()
Entrambi questi metodi funzionano bene. Tuttavia richiedono molto tempo per calcolare la dimensione della directory se ci sono molte sottocartelle. Ad esempio, ho una directory con 150.000 sottocartelle. I metodi di cui sopra hanno impiegato circa 1 ora e 30 minuti per calcolare la dimensione della directory. Tuttavia, se controllo la dimensione da windows ci vuole meno di un minuto.
Si prega di suggerire modi migliori e più veloci per calcolare la dimensione della directory.
@ Magicprog.fr, bel ciclo. Puoi dirmi qual è il trucco con il contatore di reset qui? Perché restituisce comunque la giusta dimensione della cartella con tutte le sottocartelle? Io proprio non capisco ... – LuckyLuke82