J'ai besoin de calculer la taille de répertoire en VB .NetQuelle est la meilleure façon de calculer la taille d'un répertoire dans VB .NET?
Je sais que les 2 méthodes suivantes
Méthode 1: à partir de MSDN http://msdn.microsoft.com/en-us/library/system.io.directory.aspx
« L'exemple suivant calcule la taille d'un répertoire » et ses sous-répertoires, le cas échéant, et affiche la taille totale 'en octets.
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éthode 2: à partir 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()
Ces deux méthodes fonctionnent très bien. Cependant, ils prennent beaucoup de temps pour calculer la taille du répertoire s'il y a beaucoup de sous-dossiers. Par exemple, j'ai un répertoire avec 150 000 sous-dossiers. Les méthodes ci-dessus ont pris environ 1 heure 30 minutes pour calculer la taille du répertoire. Cependant, si je vérifie la taille des fenêtres cela prend moins d'une minute.
S'il vous plaît suggérer des moyens meilleurs et plus rapides pour calculer la taille du répertoire.
@ Magicprog.fr, belle boucle. Pouvez-vous me dire quel est le truc avec le compteur de réinitialisation ici? Pourquoi retourne-t-il toujours la bonne taille de dossier avec tous les sous-dossiers? Je ne comprends pas ... – LuckyLuke82