Doberenz_gewinnus_ Arrays mit LINQ initialisieren5In dieser Blogserie möchten wir Ihnen eine kleine Auswahl aus den „Rezepten“ unserer neuen Titel Visual Basic 2015 und Visual C# 2015 präsentieren, und Ihnen als künftigen oder fortgeschrittenen VB- oder C#-Programmierer, einen Vorgeschmack darauf geben, wie Sie einzelne Komponenten für das Microsoft .NET Framework programmieren können. Das erste Rezept, Arrays mit LINQ initialisieren, haben wir Ihnen schon geliefert, heute geht es darum, echte ZIP-Dateien zu erstellen.

Los gehts mit dem zweiten Visual Basic-Rezept, Echte ZIP-Dateien erstellen:

Geht es um das Erstellen und Verarbeiten von ZIP-Dateien, können Sie sicher beim „Urschleim“ anfangen und eine eigene Library erstellen. Sie können sich aber auch das Leben leicht machen und einfach eine der vielen Freeware-Libraries nutzen, die das Web bietet.

Wir haben uns für die „DotNetZip Library“ entschieden, die einen recht großen Funktionsumfang bietet, gleichzeitig aber auch einfach und intuitiv programmierbar ist. Die Library und die dazugehörige Hilfedatei finden Sie unter:

Entpacken Sie die heruntergeladene Datei und binden Sie die enthaltene Datei Ionic.Zip.dll als Verweis in Ihre Anwendung ein. Die Option Copy Local setzen Sie bitte auf True, in diesem Fall wird die DLL in das spätere Anwendungsverzeichnis kopiert.

Oberfläche

Erstellen Sie eine einfache WPF-Anwendung mit einer ListBox und einer Schaltfläche:

<Window x:Class="ZIP_Bsp.MainWindow"
...
    Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded">
 <DockPanel >
   <Button DockPanel.Dock="Top" Content="Packen" Height="23" Name="Button1"
       Click="Button1_Click" />
   <ListBox Name="ListBox1" />
 </DockPanel>
</Window>

Quelltext

Imports System.IO

Imports Ionic.Zip

 

Class MainWindow
...
Mit dem Laden des Formulars füllen wir die ListBox mit den Namen der Datei
im aktuellen Verzeichnis:
   Private Sub Window_Loaded(sender As Object, e As 
   System.Windows.RoutedEventArgs)
       Dim di As New DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory)
       ListBox1.Items.Clear()
       For Each f As FileInfo In di.GetFiles()
           ListBox1.Items.Add(f.FullName)
       Next f
 End Sub

So, nun können wir uns schon dem Verpacken der Dateien widmen:
   Private Sub Button1_Click(sender As Object, e As 
   System.Windows.RoutedEventArgs)
Eine Instanz der ZipFile-Klasse erstellen:
       Using zip As New ZipFile()
Das optionale Passwort festlegen:
           zip.Password = "geheim"
Alle Dateien, die in der ListBox angezeigt werden, der ZIP-Datei hinzufügen 
(wir legen diese im Wurzelverzeichnis der ZIP-Datei ab, optional können Sie
auch die Laufwerksstruktur übernehmen oder einen anderen Pfad innerhalb der
ZIP-Datei festlegen:
           For Each s As String In ListBox1.Items
               zip.AddFile(s, "\")
           Next s
Speichern der ZIP-Datei:
           zip.Save(AppDomain.CurrentDomain.BaseDirectory & "Backup.zip")
Anzeige des Folders:
           Process.Start(AppDomain.CurrentDomain.BaseDirectory)

End Using

End Sub

Ups, das war es schon, weniger Code ist wohl kaum möglich.

 

Test

Nach dem Start genügt ein kurzer Klick auf die Schaltfläche und Sie erhalten die gewünschte ZIP-Datei:

Abb. Echte ZIP-Dateien erstellen aus dem Fachbuch Visual Basic 2015 von Walter Doberenz und Thomas Gewinnus, Carl Hanser Verlag, München 2015.

Abb. Echte ZIP-Dateien erstellen aus dem Fachbuch Visual Basic 2015 von Walter Doberenz und Thomas Gewinnus, Carl Hanser Verlag, München 2015.