برای بدست آوردن حجم اصلی فایل به بایت کافیه که از کلاس FileInfo از فضای نام IO استفاده کنید و خصوصیت Length مقدار بایت های حجم فایل را بر می گرداند:
Untitled.png
در این بخش یک آرایه داریم از نوع FileInfo که آدرس 3 تا فایل رو بصورت پیش فرض گرفته:
Dim Fio() As IO.FileInfo = {New IO.FileInfo("C:\Windows\System32\notepad.exe"), New IO.FileInfo("C:\Windows\System32\shell32.dll"), New IO.FileInfo("C:\Windows\System32\wmp.dll")}
هر کدوم از عناصر آرایه با حلقه For Each...Loop پیمایش می شن و حجم هر فایل در واحد های مختلف نمایش داده می شه:
For Each FI As IO.FileInfo In Fio
Dim FSI As New FileSizeInfo(FI.Length)
With FSI
Console.WriteLine()
Console.Write("{0}", vbTab)
Console.WriteLine("FileName: {0}", FI.Name)
Console.Write("{0}", vbTab)
Console.WriteLine("File Size: [{0} Bytes] - [{1} KB] - [{2} MB] - [{3} GB]", FormatNumber(.Bytes, 0, TriState.True, , TriState.True), FormatNumber(.KBytes, 3, TriState.True, , TriState.True), FormatNumber(.MBytes, 3, TriState.True, , TriState.True), FormatNumber(.GBytes, 3, TriState.True, , TriState.True))
End With
Next
برای بدست آوردن واحدهای مختلف اندازه فایل یک Structure داریم که با ایجاد یک متغیر از نوع جدید اون و ارائه دادن مقدار بایت های فایل به ورودی متود New همه واحد ها از طریق متغیر قابل دسترسی هستند:
Structure FileSizeInfo
Sub New(Len As Long)
BytesValue = Len
End Sub
Private BytesValue As Long
Public ReadOnly Property Bytes() As Long
Get
Return BytesValue
End Get
End Property
Public ReadOnly Property KBytes() As Double
Get
Dim Unit As Int16 = 1024
Return Me.Bytes / Unit
End Get
End Property
Public ReadOnly Property MBytes() As Double
Get
Dim Unit As Int32 = Math.Pow(1024, 2)
Return Me.Bytes / Unit
End Get
End Property
Public ReadOnly Property GBytes() As Double
Get
Dim Unit As Int32 = Math.Pow(1024, 3)
Return (Me.Bytes / Unit)
End Get
End Property
End Structure
*برای هر واحد بزرگتر از تابع Pow از کلاس Math از فضای نام System استفاده شده است*
سورس برنامه: (یک Console Application که با دستور Len ججم هر فایل که بصورت پیش فرض عناصر یک آرایه را تشکیل می دهند را نمایش می دهد)
Pow-Max-Min-Len.zip