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:
Eigenschaft | Beschreibung |
---|---|
Type | Bevor 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 |
Min | Kleinster Kompressionsgrad (Level=1) für den verwendeten Kompressionstreiber |
Default | Standard-Kompressionsgrad: zlib → 6 und bzlib2 → 9 |
Max | Größ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
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()