我需要在VB的.Net計算目錄大小在VB .NET中計算目錄大小的最佳方法是什麼?
我知道以下2種方法
方法1:從MSDN http://msdn.microsoft.com/en-us/library/system.io.directory.aspx
「下面的示例計算目錄 」的大小和其子目錄(如果有的話),並以字節顯示總大小 '。
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
方法2:從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()
這兩種方法很好地工作。但是,如果有大量的子文件夾,他們會花費很多時間來計算目錄大小。例如我有一個包含150,000個子文件夾的目錄。上述方法需要大約1小時30分鐘來計算目錄的大小。但是,如果我從窗口檢查大小,則需要不到一分鐘的時間。
請建議更好更快的方法來計算目錄的大小。
@ Magicprog.fr,漂亮的循環得到總大小。你能告訴我在這裏重置櫃檯的訣竅是什麼?爲什麼它仍然返回所有子文件夾的正確文件夾大小?我只是不明白... – LuckyLuke82 2017-01-09 16:54:51