zippen mit struktur?!

ForceDragonX

Grünschnabel
@Alexander Schuc: Deine Snippets sind wirklich genial. :)
Ich verwende bisher nur das erste Snippet (ich mache gerne alles nacheinander, das zweite Snippet kommt erst, wenn das folgende Problem gelöst ist).
Nun kann ich allerdings keinen Fortschritt mithilfe eines Backgroundworkers aus dem DoWork()-Event holen, da die eigentliche Arbeit in GoSubDirs erfolgt.
Wie mache ich denn, dass ich den Fortschritt dieses Events anzeigen lassen kann, oder den Gesamtfortschritt beider Events?
 

…•xXCecilXx•…

Grünschnabel
Hallo Tutorials Team,
Ich möchte den Thread hier gerne fortsetzen und zwar deshalb weil ich hier zwar C# beim Lösen des Zippens und entzippens finde aber das von mir benötigte VB leider nur im entzippen.
Deshalb bitte ich euch mir evtl. das was Alex in C# gepostet hat mir irgentwie in VB.NET zuzeigen ich habe es mal versucht(werde es auch weiter versuchen) den Code umzuschreiben aber die fehlermeldungen werden irgentwie nicht kleiner (ks nur die ausgabe der Fehler nicht sofortige Rote meldungen das es garnicht erst anläuft ;P)
wäre wirklcih sehr dankbar

hier mal mein ehm Brei den ich aus dem C# von Alex geschaffen habe
Code:
Imports ICSharpCode.SharpZipLib.Zip
Imports ICSharpCode.SharpZipLib.Core
Imports System.IO

Dim parentPath As String

Private Sub btnZip_Click() 'object sender, System.EventArgs e)
        Dim s As New ZipOutputStream(File.Create(TextBox2.Text))
        s.SetLevel(1)
        Dim maindir As New DirectoryInfo(TextBox1.Text)
        parentPath = maindir.Parent.FullName + "\"
        MessageBox.Show(parentPath)
        GoSubdirs(s, TextBox1.Text)
        s.Close()
    End Sub

    Private Sub GoSubdirs(ByVal s As ZipOutputStream, ByVal path As String)
        Dim Dir As New DirectoryInfo(path)
        For Each subdir In Dir.GetDirectories()
            GoSubdirs(s, subdir.FullName)
        Next
        Dim fi As FileInfo
        For Each fi In Dir.GetFiles()
            Dim fs As FileStream = File.OpenRead(fi.FullName)
            Dim buffer(fs.Length) As Byte
            fs.Read(Buffer, 0, Buffer.Length)
            Dim entry As New ZipEntry(Dir.FullName.Replace(parentPath, "") + "/" + fi.Name)
            entry.Size = fs.Length
            fs.Close()
            s.PutNextEntry(entry)
            s.Write(Buffer, 0, Buffer.Length)
        Next
    End Sub
ich hoffe mal das dies etwas hilft.
MfG Cecil
 

Peter86

Erfahrenes Mitglied
Code:
Imports ICSharpCode.SharpZipLib.Zip
Imports ICSharpCode.SharpZipLib.Core
Imports System.IO

Dim parentPath As String

Private Sub btnZip_Click() 'object sender, System.EventArgs e)
        Dim s As New ZipOutputStream(File.Create(TextBox2.Text))
        s.SetLevel(1)
        Dim maindir As New DirectoryInfo(TextBox1.Text)
        parentPath = maindir.Parent.FullName + "\"
        MessageBox.Show(parentPath)
        GoSubdirs(s, TextBox1.Text)
        s.Close()
    End Sub

    Private Sub GoSubdirs(ByVal s As ZipOutputStream, ByVal path As String)
        Dim Dir As New DirectoryInfo(path)
        For Each subdir In Dir.GetDirectories()
            GoSubdirs(s, subdir.FullName)
        Next
        Dim fi As FileInfo
        For Each fi In Dir.GetFiles()
            Dim fs As FileStream = File.OpenRead(fi.FullName)
            Dim buffer(fs.Length) As Byte
            fs.Read(Buffer, 0, Buffer.Length)
            Dim entry As New ZipEntry(Dir.FullName.Replace(parentPath, "") + "/" + fi.Name)
            entry.Size = fs.Length
            fs.Close()
            s.PutNextEntry(entry)
            s.Write(Buffer, 0, Buffer.Length)
        Next
    End Sub

Ich habe diesen code nun mal versucht zu verwenden doch leider stoße ich auf ein problem, mir wird folgende meldung wiedergeben beim zippen.

Code:
size was 167405, but I expected 167404

Die Zip wurde zwar erstellt, mir wird aber beim öffnen der Zip als fehlermeldung ausgegeben, das das Archiv ein unerwartetes archivende besitzt!

Hat jemand eine Lösung?

Peter86
 
Zuletzt bearbeitet: