Frage

Ich bekomme einen Fehler, wenn ich die Sharpziplib verwende. Ich habe Code, der aussieht wie

FastZip compressor = new FastZip();
compressor.CreateZip(outputFileName, currentWorkingDirectory, true, "");

Das scheint richtig zu sein. Ich bekomme jedoch eine ZipException, in der ich behauptet, dass

size was 0, but I expected 54

Ich habe keine Ahnung was das heißt. Hat jemand Einblicke oder einen Link zu einem API -Dokument irgendeiner Art?

War es hilfreich?

Lösung

Es stellt sich heraus, dass das Problem wie folgt war. Ich habe versucht, eine .zip -Datei aller Elemente in einem bestimmten Verzeichnis zu erstellen und diese .zip -Datei in das Verzeichnis zu platzieren. Anscheinend wird die Art und Weise, wie diese Bibliothek funktioniert, die .ZIP-Datei erstellt und dann wird das Verzeichnis in Datei-by-Datei gelesen, wobei in die .zip-Datei geschrieben wird. Der Fehler trat auf, als er versuchte, die .zip -Datei selbst zum Reißverschluss hinzuzufügen! Zu diesem Zeitpunkt wurde wahrscheinlich der Zugriff auf die Datei oder etwas verweigert, was zu dem obigen Fehler führte. Einfache Lösung bestand darin, die .ZIP -Datei in einem anderen Verzeichnis zu erstellen.

Andere Tipps

Hier sind Links zu ihrem Quellcode und einer Hilfedatei mit API -Dokumentation.

Ich hatte ein ähnliches Problem behoben, indem ich es im ProgressHandler -Event -Handler behandelte und die Zipentrie als Absender bestanden hatte. Da dies eine Fehlerbedingung ist, sollten wir die weitere Verarbeitung der ZIP -Datei einstellen.

private void ProcessFileHandler(object sender, ProgressEventArgs e)
        {                    
                ZipEntry newEntry = sender as ZipEntry;
                if (newEntry != null)
                {
                    newEntry.Size = e.Processed;
                }
                e.ContinueRunning = keepRunning;
                return;
         }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top