Feedback

VB - Größe einer Datei ermitteln

Veröffentlicht von am 12/30/2016
(0 Bewertungen)
Mit dieser einfachen Function lässt sich ganz einfach bestimmen, welche Größe eine Datei hat.

Man bekommt nicht wenn man z.B FileLen aufruft eine große Anzahl Bytes, mit der keiner was anfangen kann.
    Dim kb As Integer = 1024
    Dim mb As Integer = kb * 1024
    Dim gb As Integer = mb * 1024

 Private Function GetSizeType(ByVal size As Integer) As String
        If size < kb Then
            Dim newSize As Integer = size
            Return newSize & " Bytes".ToString()
        ElseIf size < mb Then
            Dim newSize As Integer = size / kb
            Return newSize & " KB".ToString()
        ElseIf size < gb Then
            Dim newSize As Integer = size / mb
            Return newSize & " MB".ToString()
        ElseIf size >= gb Then
            Dim newSize As Integer = size / gb
            Return newSize & " GB".ToString()
Else
      Return Nothing
        End If
    End Function

3 Kommentare zum Snippet

Koopakiller schrieb am 1/1/2017:
Ein paar Gedanken zum Snippet:
1. Ein Long entgegen zu nehmen wäre sinnvoller, da Integer auf lediglich <2GB (nach deiner Berechnung) beschränkt ist.
2. Ich hätte vermutlich auch noch TB eingebaut, schließlich sind Festplatten in der Größenordnung mittlerweile normal.
3. Das Return Nothing am Ende ist unnötig sofern du (wie ich es auch empfehlen würde) statt dem letzten ElseIf ein einfaches Else nimmst. Denn dort interessiert die Prüfung ja nicht mehr.
4. Wenn man unter 1024 Bytes übergibt kommt 0 heraus...was falsch ist
5. Wenn du SI Präfixe benutzt solltest du auch deren Umrechnungsfaktoren nutzen. Ansonsten eben IEC und 1024. Wann auch immer Microsoft das mal ordentlich macht...
6. Das ToString bringt nichts, da du es auf dem String aufrufst. Und der &-Operator ruft sowieso implizit für alles ToString auf wenn der 2. Operand ein String ist.
7. Man könnte den Algorithmus auch etwas generischer gestalten. Wie viel das bringt ist allerdings fraglich.
Martin Dauskardt schrieb am 1/4/2017:
Ich persönlich war mit diesem snippet ganz zufrieden:

https://dotnet-snippets.de/snippet/byte-groessenangaben-als-string-formatieren-kb-mb-gb/1304
Koopakiller schrieb am 1/4/2017:
@Martin
So etwas in der Art stellte ich mir vor :)
Nur 5. wird wohl ewig ein Problemchen sein...
 

Logge dich ein, um hier zu kommentieren!