Inhaltsverzeichnis



28.1.1 Klasse Compress

Für das Komprimieren einer Datei oder das Verpacken einer einzelnen Datei in ein Archiv sind vor allem diese 4 ausgewählten Eigenschaften und die Methode Compress.File interessant:

EigenschaftBeschreibung
TypeBevor Sie eine der Methoden dieser Klasse verwenden können, müssen Sie den Kompressionstreiber auswählen, den Sie verwenden wollen. Zur Wahl stehen 2: zlib oder bzlib2
MinKleinster Kompressionsgrad (Level=1) für den verwendeten Kompressionstreiber
DefaultStandard-Kompressionsgrad: zlib → 6 und bzlib2 → 9
MaxGrößter Kompressionsgrad ist für zlib und bzlib2 gleich 9

Tabelle 28.1.1.1: Eigenschaften der Klasse Compress

Die Methode Compress.File hat folgende Syntax:

SUB File ( Source AS String, Target AS String [ , Level AS Integer ] )

Source: Pfad zur zu verpackenden Datei Target: Pfad der Archiv-Datei. Ist das Archiv bereits vorhanden, wird es ohne Rückfrage überschrieben. Level: Die Angabe des Kompressionsgrades ist optional. Fehlt diese Angabe, dann wird der Standard-Kompressionsgrad (Tabelle 28.1.1.1) für den verwendeten Kompressionstreiber verwendet.

Abbildung 28.1.1.1: Programm zum Verpacken einer Datei nach zwei unterschiedlichen Algorithmen

28.1.1.1 Projekt Compress

Für dieses Projekt wird der vollständige Quelltext angegeben und in den folgenden Kommentaren kurz erläutert:

' Gambas class file
' Um eine komprimierte Datei zu generieren, benötigen Sie die Komponente gb.compress!
 
Private sFileSource As String
Private sFileTarget As String
Private sCompLevel As String
 
Private sExtension As String
 
Public Sub Form_Open()
  FMain.Center
  FMain.Resizable = False
  SpinBoxZLIB.MinValue = 1     ' Best speed
  SpinBoxZLIB.MaxValue = 9     ' Best compression
  SpinBoxZLIB.Value = 6        ' Default
  SpinBoxBZLIB2.MinValue = 1   ' Best speed - Fast
  SpinBoxBZLIB2.MaxValue = 9   ' Best compression
  SpinBoxBZLIB2.Value = 9      ' Default
End ' Form_Open()
 
Public Sub btnCompressZLIB_Click()
  Dim Cp As New Compress
 
  sExtension = ".gz"
 
  Dialog.Filter = ["*.csv", "CSV-Datei", "*", "Alle Dateien"]
  Dialog.Path = User.Home
  Dialog.Title = "Wählen Sie eine Datei aus!"
  If Dialog.OpenFile() Then Return
 
  sFileSource = Dialog.Path
  sFileTarget = sFileSource & sExtension
 
  Cp.Type = "zlib"
  Cp.File(sFileSource, sFileTarget, SpinBoxZLIB.Value)
 
End ' btnCompressZLIB_Click()
 
Public Sub btnCompressBZLIB2_Click()
  Dim Cp As New Compress
 
  sExtension = ".bz2"
 
  Dialog.Filter = ["*.csv", "CSV-Datei", "*", "Alle Dateien"]
  Dialog.Path = User.Home
  Dialog.Title = "Wählen Sie eine Datei aus!"
  If Dialog.OpenFile() Then Return
 
  sFileSource = Dialog.Path
  sFileTarget = sFileSource & sExtension
 
  Cp.Type = "bzlib2"
  Cp.File(sFileSource, sFileTarget, SpinBoxZLIB.Value)
 
End ' btnCompressBZLIB2_Click()

28.1.1.2 Kommentare

Download