vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Dateisystem · Dateien - allgemein   |   VB-Versionen: VB.NET10.07.06
Datei komprimieren und decomprimieren (VB 2005)

Mit der neuen GZipStream-Klasse im .NET Framework 2.0 lassen sich einzelne Dateien bequem komprimieren und wieder dekomprimieren.

Autor:   Dieter OtterBewertung:  Views:  26.027 
www.tools4vb.deSystem:  WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Mit der neuen GZipStream-Klasse im .NET Framework 2.0 lassen sich einzelne Dateien bequem komprimieren und wieder dekomprimieren. Zu beachten ist hierbei allerdings, dass sich keine ZIP-Archive mit mehreren Dateien erstellen lassen - es können immer nur einzelne Dateien komprimiert und dekomprimiert werden.

' Datei komprimieren (GZIP)
Public Function ZipFile(ByVal sFile As String, Optional ByVal sZipFile As String = "") As Boolean
  Try
    ' Existiert die Datei überhaupt
    If System.IO.File.Exists(sFile) Then
      ' Falls keine Zieldatei angegeben, Quelldatei mit Endung ".gzip" annehmen
      If sZipFile.Length = 0 Then
        With New System.IO.FileInfo(sFile)
          sZipFile = .DirectoryName
          If Not sZipFile.EndsWith("\") Then sZipFile += "\"
          sZipFile += .Name.Substring(0, .Name.Length - .Extension.Length) & ".gzip"
        End With
      End If
 
      ' Inhalt der Datei einlesen
      Dim oStream As System.IO.FileStream
      oStream = New System.IO.FileStream(sFile, IO.FileMode.Open)
      Dim bBuffer(oStream.Length - 1) As Byte
      With oStream
        .Read(bBuffer, 0, bBuffer.Length)
        .Close()
      End With
 
      ' Jetzt Daten komprimieren und in Zieldatei speichern
      oStream = New System.IO.FileStream(sZipFile, IO.FileMode.Create)
      Dim oCompress As New System.IO.Compression.GZipStream( _
        oStream, IO.Compression.CompressionMode.Compress)
      With oCompress
        .Write(bBuffer, 0, bBuffer.Length)
        .Flush()
        .Close()
      End With
      oStream.Close()
    End If
    Return True
  Catch
    Return False
  End Try
End Function
' Datei (GZIP) dekomprimieren
Public Function UnzipFile(ByVal sZipFile As String, ByVal sDestFile As String) As Boolean
  Try
    ' Existiert die Datei überhaupt
    If System.IO.File.Exists(sZipFile) Then
      ' GZIP-Datei öffnen
      Dim oStream As New System.IO.FileStream(sZipFile, IO.FileMode.Open)
      Dim oCompress As New System.IO.Compression.GZipStream( _
        oStream, IO.Compression.CompressionMode.Decompress)
 
      ' Inhalt blockweise auslesen und dekomprimieren
      Dim bBuffer() As Byte
      Dim nOffset As Integer = 0
      Dim nCount As Integer = 0
      While True
        ReDim Preserve bBuffer(nCount + 100)
        Dim nBytes As Integer = oCompress.Read(bBuffer, nOffset, 100)
        If nBytes = 0 Then Exit While
        nOffset += nBytes
        nCount += nBytes
      End While
      ReDim Preserve bBuffer(nCount - 1)
 
      ' Byte-Array in Zieldatei speichern
      My.Computer.FileSystem.WriteAllBytes(sDestFile, bBuffer, False)
 
      oStream.Close()
      oCompress.Close()
      Return True
    End If
  Catch
    Return False
  End Try
End Function

Aufrufbeispiel:

' Datei "test.txt" komprimieren (als TEST.GZIP)
Dim bResult As Boolean = ZipFile("d:\temp\test.txt")
' TEST.GZIP dekomprimieren
Dim bResult As Boolean = UnzipFile("d:\temp\test.gzip", "d:\temp\test1.txt")



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- 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.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle 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.