Ungerade Fehler in Sharpziplib - Größe war x, aber ich habe y erwartet
-
06-07-2019 - |
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?
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;
}