Ich verwende den folgenden Code, um eine Zip-Datei in Java zu extrahieren.
%Vor%Offensichtlich wird dies aufgrund der break-Anweisung keinen Ordnerbaum extrahieren. Ich habe versucht, Rekursion zu verwenden, um eine Ordnerstruktur zu verarbeiten, aber es ist fehlgeschlagen. Könnte mir jemand zeigen, wie man diesen Code verbessert, um mit einer Ordner-Struktur statt mit einem komprimierten Ordner auf einer Ebene umzugehen.
Eine weitere Option ist commons-compress , für die auf der oben verlinkten Seite Beispielcode vorhanden ist.
Ich musste dies tun, weil eine API, die ich verwendete, einen Dateiparameter benötigte, den Sie nicht von einer Ressource in einer JAR erhalten können.
Ich habe festgestellt, dass die Antwort von @Emre nicht korrekt funktioniert hat. Aus irgendeinem Grund übersprang ZipEntry einige Dateien im JAR (kein offensichtliches Muster dafür). Ich habe das mit JarEntry behoben. Es gibt auch einen Fehler im obigen Code, wo die Datei im ZIP-Eintrag vor dem Verzeichnis aufgelistet werden kann, was eine Ausnahme verursacht, weil das Verzeichnis noch nicht erstellt wurde.
Beachten Sie, dass der folgende Code von Apache Commons-Dienstprogrammklassen abhängt.
%Vor%Tags und Links java zip compression extraction