1Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
11
11
ZUGRIFFE
13717
13717
EMPFEHLEN
-
Hallo Leute
Wie kann man ein zip-Archiv in ein bestimmtes Verzeichniss entpacken? Das Archiv enthält mehrere Ordner mit Unterordnern.
thx
-
03.08.05 20:29 #2
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo!
Schau mal hier:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
package de.tutorials; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.util.Enumeration; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; public class ZipArchiveExtractor { /** * @param args */ public static void main(String[] args) throws Exception { new ZipArchiveExtractor().extractArchive(new File( "s:/tools/eclipse/plugins/com.ibm.icu_3.4.4.1.jar"), new File( "c:/tmp/x")); } public void extractArchive(File archive, File destDir) throws Exception { if (!destDir.exists()) { destDir.mkdir(); } ZipFile zipFile = new ZipFile(archive); Enumeration entries = zipFile.entries(); byte[] buffer = new byte[16384]; int len; while (entries.hasMoreElements()) { ZipEntry entry = (ZipEntry) entries.nextElement(); String entryFileName = entry.getName(); File dir = dir = buildDirectoryHierarchyFor(entryFileName, destDir); if (!dir.exists()) { dir.mkdirs(); } if (!entry.isDirectory()) { BufferedOutputStream bos = new BufferedOutputStream( new FileOutputStream(new File(destDir, entryFileName))); BufferedInputStream bis = new BufferedInputStream(zipFile .getInputStream(entry)); while ((len = bis.read(buffer)) > 0) { bos.write(buffer, 0, len); } bos.flush(); bos.close(); bis.close(); } } zipFile.close(); } private File buildDirectoryHierarchyFor(String entryName, File destDir) { int lastIndex = entryName.lastIndexOf('/'); String entryFileName = entryName.substring(lastIndex + 1); String internalPathToEntry = entryName.substring(0, lastIndex + 1); return new File(destDir, internalPathToEntry); } }
//Edit: kleine korrektur so sollte es funktionieren.
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
Hallo erst mal danke für die schnelle Antwort.
Versteh ich das richtig, dass
public void extractArchive(File archive, File destDir) throws Exception {
...
}
die Methode fürs entpacken ist?
Wie ruft man die dann mit den richtigen Angaben für das zip-Archiv und Zielverzeichnis auf?
-
Oh wie peinlich! Jetzt stand ich aber total auf der Leitung. Natürlich funktionierts jetzt
-
Allerdings funktioniert der Code nicht mit Unterordnern im Archiv oder täusch ich mich da mal wieder?
-
04.08.05 21:17 #6
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo!
ja du täuschst dichAllerdings funktioniert der Code nicht mit Unterordnern im Archiv oder täusch ich mich da mal wieder?
... funktioniert bei mir einwandfrei mit Unterordnern im Archiv.
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
Kann man irgendwie noch in den Code reinbringen dass es bei jeder entpackten Datei eine Variable aktualisiert, die enthaltet wieviel Prozent des Archivs schon entpackt sind? Sicher geht das, aber wie?
-
10.10.05 08:39 #8
Tach.
Hab auch schonmal zippen und entzippen gearbeitet, und wollte meine
Benutzer auch eine ProgressBar sehen lassen.
Ich bin zu dem Entschluss gekommen, dass es schon geht, aber nicht sehr
genau ist.
Eine Methode:
Zähle die Verzeichnisse und Dateien in der ersten Ebene und diese nimmst du
dann für deine Prozentrechnung. Wenn es 12 Files sind rechnest du also 100/12.
und mit den 8,33 kannst du dann deine Variable hochticken. Also immer wenn ein
File entpackt wurde zählst du um 8,33 hoch. Und zum Schluss sagst du der Variablen
nochmal explizit "Du hast 100% erreicht".
Die Methode würde ich aber nicht rekursiv anwenden. Das wär zu Performancelastig.
Und so würde es reichen.
Mustt du mal sehen ob dir das recht ist, oder ob Tom ne bessere Lösung hatIch hab keine Ahnung.
Aber davon jede Menge.
-
sollte man nicht vielleicht lieber sofern möglich die Größe der files
in die prozentrechnung einbeziehen als die Anzahl?
Ich mein wenn man son 3gig ding entpackt wäre ja erst 0% und dann auf einmal (nach einiger zeit in der die progressbar auf 0% bleibt) 100% ... 0o
Selbst wenns jetzt nun 12 files wären sind die ja nich alle gleichgroß
-
Hallo zusammen,
funktioniert oben stehender Code auch unter Linux?
Oder muss folgende Zeile dafür verändert werden****?
int lastIndex = entryName.lastIndexOf('/');
Danke und Gruesse
-
04.05.11 23:42 #11
- Registriert seit
- Jun 2009
- Beiträge
- 870
bezieht sich auf die Struktur innerhalb des ZIP-Archives. Diese ist unabhängig vom Betriebssystem. Der Slash ist das Trennzeichen zwischen internen "ordnern" und "Dateien".int lastIndex = entryName.lastIndexOf('/');
Was du allerdings ändern müsstest, wäre der Pfad zum ZIP-Archiv!Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.Code java:1
System.out.println("Hallo");
___________
Ubuntu Bug #1: Microsoft has a majority market share
Casecon: Projekt leiser Käse
-
08.08.11 19:54 #12
- Registriert seit
- Aug 2011
- Beiträge
- 2
Wie immer
. Genau das was ich suchte. Gewöhn mir schon langsam an, deinen Namen mit in die Suche reinzunehmen. Vielen Dank für all den genialen Code den du der Welt zur Verfügung stellst.
Ähnliche Themen
-
Zip entpacken
Von Peter86 im Forum .NET CaféAntworten: 15Letzter Beitrag: 09.10.11, 14:27 -
Jar entpacken
Von Leroux im Forum Microsoft WindowsAntworten: 2Letzter Beitrag: 08.10.08, 11:32 -
zip entpacken
Von Sturm im Forum PHPAntworten: 3Letzter Beitrag: 09.01.07, 19:53 -
*.gz entpacken
Von ChuloGT im Forum PHPAntworten: 2Letzter Beitrag: 02.11.04, 13:53 -
Entpacken von .zip
Von rauchmelder im Forum PHPAntworten: 1Letzter Beitrag: 05.09.04, 19:31





Zitieren

Login





