necesito para calcular el tamaño del directorio en VB .Net¿Cuál es la mejor manera de calcular el tamaño de un directorio en VB .NET?
sé los siguientes 2 métodos
Método 1: desde MSDN http://msdn.microsoft.com/en-us/library/system.io.directory.aspx
'El siguiente ejemplo calcula el tamaño de un directorio ' y sus subdirectorios, si los hay, y muestra el tamaño total 'en bytes.
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
Método 2: desde 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()
Ambos métodos funcionan bien. Sin embargo, toman mucho tiempo para calcular el tamaño del directorio si hay muchas subcarpetas. Por ejemplo, tengo un directorio con 150,000 subcarpetas. Los métodos anteriores tomaron alrededor de 1 hora y 30 minutos para calcular el tamaño del directorio. Sin embargo, si verifico el tamaño desde Windows tarda menos de un minuto.
Por favor sugiera maneras mejores y más rápidas de calcular el tamaño del directorio.
@ Magicprog.fr, lazo agradable. ¿Me puede decir cuál es el truco con el contador de restablecimiento aquí? ¿Por qué todavía devuelve el tamaño de carpeta correcto con todas las subcarpetas? Simplemente no lo entiendo ... – LuckyLuke82