vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
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:     [ Jetzt bewerten ]Views:  26.015 
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")

Dieser Tipp wurde bereits 26.015 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 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.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv 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