vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 
zurück
Rubrik: Dateisystem · Dateien allgemein   |   VB-Versionen: VB4, VB5, VB613.07.05
Größe einer komprimierten Datei ermitteln

Unter Windows NT/2000/XP können Datein im komprimierter Form auf der Festplatte gespeichert werden. Wie man den tatsächlichen Speicherbedarf einer komprimeirten Datei ermitteln kann, das erfahren Sie hier.

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  9.044 
www.tools4vb.deSystem:  WinNT, Win2k, WinXP, Vista, Win7, Win8, Win10 Beispielprojekt auf CD 

Unter Windows NT/2000/XP können bei Verwendung des NTFS-Dateisystems Dateien komprimiert auf der Festplatte gespeichert werden. Diese Dateien benötigen demzufolge weniger Festplatten-Platz. Wenn Sie nun wissen möchten, wieviel Speicherplatz komprimierte Dateien tatsächlich benötigen, haben Sie ein Problem. Denn sowohl die FileLen-Funktion, als auch die Size-Eigenschaft der FileSystemObject-Klasse liefert in diesem Fall immer die Original-Größe der Datei - nicht aber die tatsächliche Größe, die eine komprimierte Datei auf der Festplatte belegt.

Wie so oft, können wir dem aber unter Zuhilfenahme des Windows-API oder genauer gesagt durch Einsatz der GetCompressedFileSize-Funktion Abhilfe schaffen. Die Funktion selbst erwartet als ersten Parameter den Dateinamen und gibt die komprimierte Größe der angegebenen Datei in zwei Werten zurück: Der Rückgabewert der Funktion enthält die ersten 32 Bit der Dateigröße, was für Dateien bis zu 4 GB ausreicht. Werden mehr als 4 GB Speicherplatz für die Datei benötigt, werden die nächsten 32 Bit der Dateigröße im zweiten Parameter der Funktion zurückgegeben.

Option Explicit
 
' Benötigte API-Deklaration
Private Declare Function GetCompressedFileSize Lib "kernel32" _
  Alias "GetCompressedFileSizeA" ( _
  ByVal lpFileName As String, _
  ByRef lpFileSizeHigh As Long) As Long
' Größe einer komprimierten Datei ermitteln
Private Function GetCompressedSize(ByVal sFile As String) As Double
  Dim nSizeHigh As Long
  Dim nSize As Double
 
  nSize = GetCompressedFileSize(sFile, nSizeHigh)
  If nSize < 0 Then nSize = 2147483648# + (2147483648# - Abs(nSize))
  If nSizeHigh > 0 Then
    nSize = nSize + (nSizeHigh * 4294967296#) ' 2 ^32
  End If
 
  GetCompressedSize = nSize
End Function

Dieser Tipp wurde bereits 9.044 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen [email protected]  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren [email protected]!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2022 [email protected] Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel