我需要在VB .Net中计算目录大小。
我知道以下两种方法:
方法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
方法二:来自.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分钟来计算目录的大小。然而,如果我从Windows中检查大小,只需要不到一分钟。
请建议更好、更快的方式来计算目录的大小。