Für das De-Komprimieren einer Datei oder das Entpacken einer einzelnen Datei aus einem Archiv sind vor allem die Eigenschaft Type und die Methode Uncompress.File informativ, denn bevor Sie eine Methode dieser Klasse verwenden können, müssen Sie den Kompressionstreiber auswählen, den Sie zum Entpacken verwenden wollen. Zur Wahl stehen die zwei Typen: zlib oder bzlib2.
Die Methode Uncompress.File hat folgende Syntax:
SUB File ( Source AS String, Target AS String )
Source: Pfad zur Archiv-Datei. Target: Pfad der ausgepackten Datei. Existiert die ausgepackte Datei, dann wird diese ohne Rückfrage überschrieben.
Abbildung 28.1.2.1: Programm zum Entpacken einer Archiv-Datei nach zwei unterschiedlichen Algorithmen
Auch 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 entpacken, benötigen Sie die Komponente gb.compress. Private sFileSource As String Private sFileTarget As String Public Sub Form_Open() FMain.Center FMain.Resizable = False End ' Form_Open() Public Sub btnUnCompressZLIB_Click() Dim UCp As New Uncompress Dialog.Filter = ["*.gz", "Archiv-Datei", "*", "Alle Dateien"] Dialog.Path = User.Home Dialog.Title = "Wählen Sie eine Datei aus!" If Dialog.OpenFile() Then Return sFileSource = Dialog.Path sFileTarget = File.Dir(Dialog.Path) &/ File.BaseName(Dialog.Path) UCp.Type = "zlib" UCp.File(sFileSource, sFileTarget) End ' UnCompressZLIB Public Sub btnUnCompressBZLIB2_Click() Dim UCp As New Uncompress Dialog.Filter = ["*.bz2", "Archiv-Datei", "*", "Alle Dateien"] Dialog.Path = User.Home Dialog.Title = "Wählen Sie eine Datei aus!" If Dialog.OpenFile() Then Return sFileSource = Dialog.Path sFileTarget = File.Dir(Dialog.Path) &/ File.BaseName(Dialog.Path) UCp.Type = "bzlib2" UCp.File(sFileSource, sFileTarget) End ' UnCompressBZLIB2 Public Sub btnClose_Click() FMain.Close End ' btnClose_Click()