Zip-Archiv erstellen

  • VB.NET

Es gibt 22 Antworten in diesem Thema. Der letzte Beitrag () ist von TheMaxiSoftware.

    Zip-Archiv erstellen

    Hi,
    ich hoffe, dass ihr mir bei meinem Problem helfen könnt!

    Ich will ein Programm schreiben, welches ein zip Archiv erstellen und entpacken kann.
    Ich habe auch schon folgenden Code ausprobiert, welcher bei mir leider nicht funktioniert, da "ZipFile" nich deklariert wurde.

    VB.NET-Quellcode

    1. Imports System.IO
    2. Imports System.IO.Compression
    3. Public Class Form1
    4. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    5. ZipFile.CreateFromDirectory(StartPfad, ZipPfad)
    6. ZipFile.ExtractToDirectory(ZipPfad, ExtractPfad)
    7. End Sub
    8. End Class
    Hast du eh .Net Framework 4.5?
    Das benötigst du.
    Siehe JensMan's Beitrag.
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    x-beliebig geht nicht, weil hier das "ZipFile" nicht, will hier das "ZipFile" nicht deklariert ist:

    VB.NET-Quellcode

    1. Dim ZipToUnpack As String = "C1P3SML.zip"
    2. Dim TargetDir As String = "C1P3SML"
    3. Console.WriteLine("Extracting file {0} to {1}", ZipToUnpack, TargetDir)
    4. Using zip1 As ZipFile = ZipFile.Read(ZipToUnpack)
    5. AddHandler zip1.ExtractProgress, AddressOf MyExtractProgress
    6. Dim e As ZipEntry
    7. ' here, we extract every entry, but we could extract
    8. ' based on entry name, size, date, etc.
    9. For Each e In zip1
    10. e.Extract(TargetDir, ExtractExistingFileAction.OverwriteSilently)
    11. Next
    12. End Using
    Mal ganz im ernst. Du hast keinen Plan wie man eine lib einbindet oder überhaupt irgendwelche Grundlagen... AAABER du machst Youtube Tutorials?
    Du kannst es noch wirklich weit bringen in der Branche -> LukaSoftware hat hunderte wenn nicht tausende Fans und der hat sicher auch so ähnlich angefangen :thumbsup: :thumbsup:


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Doch ich habe schon öfter Libs eingebunden, aber ich wusste nicht, dass man diese herunterladen kann!
    Außerdem hat LukaSoftware gute aber unprofessionelle Tutorials!
    Zum Beispiel verwendet er in Spielen Controls, was mir eigentlich nie einfallen würde.

    Außerdem habe ich die Frage gestellt, wie das in .Net Framework 4.0 geht und nicht, was ihr von meinen Tutorials hält!

    TheMaxiSoftware schrieb:

    Außerdem hat LukaSoftware gute aber unprofessionelle Tutorials!
    Zum Beispiel verwendet er in Spielen Controls, was mir eigentlich nie einfallen würde.

    Und ich sehe den Flamewar schon kommen. Nur fürs Protokoll -> seine Tutorials taugen für nichts als Negativbeispiele.

    Und wie man diesen Downloadbutton übersehen kann weiß ich leider auch nicht:
    s1.directupload.net/images/130406/7vx4tdk7.png
    Und wie sollte man bitte eine Lib einbinden wenn man sie nicht herunterladen kann? Selbst Nu-Get lädt die Lib runter. Anders gehts nicht.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Also,
    Ich füge den Verweis von ZipFile hinzu, dann ist ein anderer Befehl noch unterringelt, da ein zweiter Verweis fehlt. Den hab ich dann auch hinzugefügt, aber dann ist das ZipFile wieder unterringelt.

    Code ist der von deinem Link
    Du brauchst du nur einen Verweis. Oder meinst du Import? Zeig einfach mal den Code und sag mir was genau nicht funktioniert.
    Und was meinst du mit "weil sobald ich eine andere Lib einfüge wieder das Problem mit dem "ZipFile" kommt."


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Das mit dem Lib sollte Verweis heißen.

    Hier ist der Code von deinem Links, den ich verwende:

    VB.NET-Quellcode

    1. Dim ZipToUnpack As String = "C1P3SML.zip"
    2. Dim TargetDir As String = "C1P3SML"
    3. Console.WriteLine("Extracting file {0} to {1}", ZipToUnpack, TargetDir)
    4. Using zip1 As ZipFile = ZipFile.Read(ZipToUnpack)
    5. AddHandler zip1.ExtractProgress, AddressOf MyExtractProgress
    6. Dim e As ZipEntry
    7. ' here, we extract every entry, but we could extract
    8. ' based on entry name, size, date, etc.
    9. For Each e In zip1
    10. e.Extract(TargetDir, ExtractExistingFileAction.OverwriteSilently)
    11. Next
    12. End Using


    Ohne Verweis ist das ZipFile unterstrichen.
    Wenn ich jetzt den Verweis für ZipFile hinzufüge, dann ist das ZipFile nicht mehr unterstrichen, dafür aber das MyExtractProgress
    Ich programmiere gerade auch mit dieser Lib :D
    MyExtractProgress ist für die Fortschrittsanzeige. So sieht die bei mir aus:

    VB.NET-Quellcode

    1. Private Sub MyExtractProgress(sender As Object, e As Ionic.Zip.ExtractProgressEventArgs)
    2. If e.BytesTransferred > 0 AndAlso e.TotalBytesToTransfer > 0 Then
    3. Me.Invoke(Sub() prg_process.Value = CInt(e.BytesTransferred * 100 \ e.TotalBytesToTransfer))
    4. End If
    5. Me.Invoke(Sub() lblStatus.Text = e.CurrentEntry.ToString.Replace("ZipEntry::", "Aktuelle Datei: "))
    6. End Sub
    Mfg
    Vincent

    Danke, für deine Antwort!

    Jetzt kommt keine Fehlermeldung mehr und ist nichts mehr falsch. Aber trotzdem wird die Zip-Datei nicht entpackt.

    Ich hab als erstes die Imports:

    VB.NET-Quellcode

    1. Imports System.IO
    2. Imports System.IO.Compression
    3. Imports Ionic.Zip


    Dann zum Packen:

    VB.NET-Quellcode

    1. Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    2. Using zip As New ZipFile()
    3. ' add this map file into the "images" directory in the zip archive
    4. zip.AddFile("C:\Users\Maxi\Bilder\mario_graphics1.png")
    5. ' add the report into a different directory in the archive
    6. zip.Save("C:\Users\Maxi\Bilder\Zip.zip")
    7. End Using
    8. End Sub


    Zum Entpacken:

    VB.NET-Quellcode

    1. Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
    2. Dim ZipToUnpack As String = "C:\Users\Maxi\Bilder\Zip.zip"
    3. Dim TargetDir As String = "Zip"
    4. Console.WriteLine("Extracting file {0} to {1}", ZipToUnpack, TargetDir)
    5. Using zip1 As ZipFile = ZipFile.Read(ZipToUnpack)
    6. AddHandler zip1.ExtractProgress, AddressOf MyExtractProgress
    7. Dim Entry As ZipEntry
    8. ' here, we extract every entry, but we could extract
    9. ' based on entry name, size, date, etc.
    10. For Each Entry In zip1
    11. Entry.Extract(TargetDir, ExtractExistingFileAction.OverwriteSilently)
    12. Next
    13. End Using
    14. MsgBox("Entpackt!")
    15. End Sub


    Und dann für die Progressbar:

    VB.NET-Quellcode

    1. Private Sub MyExtractProgress(sender As Object, e As Ionic.Zip.ExtractProgressEventArgs)
    2. If e.BytesTransferred > 0 AndAlso e.TotalBytesToTransfer > 0 Then
    3. Me.Invoke(Sub() prg_process.Value = CInt(e.BytesTransferred * 100 \ e.TotalBytesToTransfer))
    4. End If
    5. End Sub