31-12-13, 11:22 AM
اشوف الموضوع طول مع انه بسيط !
شكلي بدخل الكومندوز ليكم
اخوي علي هذي الكلاس بنفكك من ازمتك :-
+ انا استبقت الاحداث وكتبت شرح الكود لأن ادري بتسألني بعدين

شكلي بدخل الكومندوز ليكم

اخوي علي هذي الكلاس بنفكك من ازمتك :-
+ انا استبقت الاحداث وكتبت شرح الكود لأن ادري بتسألني بعدين


PHP كود :
Public Class FileSize
Const Length_Pattern As Integer = 1024
Shared ReadOnly Byte_Length As Integer = 0
Shared ReadOnly KB_Length As Double = Length_Pattern
Shared ReadOnly MB_Length As Double = Math.Pow(Length_Pattern, 2) 'عمل Power للرقم 1024'
Shared ReadOnly GB_Length As Double = Math.Pow(Length_Pattern, 3)
Shared ReadOnly TB_Length As Double = Math.Pow(Length_Pattern, 4)
Private Enum Unit
[Byte]
KB
MB
GB
TB
End Enum
''' <summary>
''' جلب حجم الملف كما في الوندوز
''' </summary>
''' <param name="filePath">مسار الملف</param>
''' <returns></returns>'''
Public Shared Function GetFileSize(filePath As String) As String
Dim fileLength As Long = New System.IO.FileInfo(filePath).Length 'طول الملف الاصلي'
Dim computeLength As Double = 0
Dim bestUnit As Unit = GetBestUnit(fileLength)
'جلب افضل وحدة للعرض'
Select Case bestUnit
Case Unit.[Byte]
Return fileLength.ToString("#,#") & " bytes"
Case Unit.KB
computeLength = fileLength / KB_Length
Exit Select
Case Unit.MB
computeLength = fileLength / MB_Length
Exit Select
Case Unit.GB
computeLength = fileLength / GB_Length
Exit Select
Case Unit.TB
computeLength = fileLength / TB_Length
Exit Select
End Select
'بتر الارقام لتصبح خانتين بعد الفاصلة'
Dim outLength As Double = Math.Truncate(100 * computeLength) / 100
Dim outText As String = String.Format("{0} {1} ({2} bytes)",
New Object() {outLength, bestUnit.ToString(), fileLength.ToString ("#,#")})
Return outText
End Function
Private Shared Function GetBestUnit(fileLength As Long) As Unit
'اختيار الوحدة الافضل للعرض'
If fileLength >= Byte_Length AndAlso fileLength < KB_Length Then
Return Unit.[Byte]
ElseIf fileLength >= KB_Length AndAlso fileLength < MB_Length Then
Return Unit.KB
ElseIf fileLength >= MB_Length AndAlso fileLength < GB_Length Then
Return Unit.MB
ElseIf fileLength >= GB_Length AndAlso fileLength < TB_Length Then
Return Unit.GB
ElseIf fileLength >= TB_Length Then
Return Unit.TB
Else
Return Unit.MB 'default '
End If
End Function
End Class

