ERLEDIGT
NEIN
NEIN
ANTWORTEN
5
5
ZUGRIFFE
1060
1060
EMPFEHLEN
-
Hallo!
Gibt es eine Möglichkeit eine Zip-Datei nicht aus der Datei zu lesen, sondern aus einem ByteArray. Also ich hab die Datei nicht auf der Festplatte sondern in einem ByteArray. Mit ZIpFile kann ich nur Dateien öffnen die sich auf der Festplatte befinden und nicht aus einem ByteArray lesen. Kann mit einer helfen?
MFG zerix
-
21.09.05 21:21 #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
package de.tutorials; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; public class ByteArrayBasedZipExample { /** * @param args */ public static void main(String[] args) throws Exception { File file = new File("c:/sonnenBlume.zip"); byte[] buffer = new byte[(int) file.length()]; FileInputStream fis = new FileInputStream(file); fis.read(buffer); fis.close(); ZipInputStream zis = new ZipInputStream( new ByteArrayInputStream(buffer)); ZipEntry entry = null; byte[] entryBuffer = new byte[8192]; int len = 0; while ((entry = zis.getNextEntry()) != null) { File entryFile = new File("c:/", System.currentTimeMillis() + entry.getName()); FileOutputStream fos = new FileOutputStream(entryFile); while ((len = zis.read(entryBuffer)) > 0) { fos.write(entryBuffer, 0, len); } fos.flush(); fos.close(); } zis.close(); } }
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
-
Danke Tom!!
Aber jetzt steh ich vor dem nächsten Problem. Mit deinem Quelltext kann ich die ganze ZipFile entpacken, aber wie kann ich jetzt ein bestimmtes entry entpacken. Es gibt ja leider nur die Methode nextEntry bei dem ZipInputStream.
-
ICh hab mal ne Idee. Ich hoffe das es funktioniert.
-
09.08.07 09:05 #5
- Registriert seit
- Jun 2007
- Beiträge
- 4
Hallo!
Das Beispiel von Thomas klappt soweit bei mir, nur wenn die Dateien in der Zip-Datei etwas größer werden (hab es mit einer ca 50 MB großen Datei versucht) bekomme ich eine Exception geworfen:
java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Unknown Source)
at java.io.ByteArrayOutputStream.write(Unknown Source)
Ich denke mal, dass intern ein Vector von bytes benutzt wird und der irgendwann zu groß wird und nicht mehr verarbeitet werden kann.
Gibt es eine andere Möglichkeit das zu realisieren. Kann mir dabei jemand helfen?
-
Hallo,
da hast du aber einen meiner ersten Beiträge in diesem Forum gefunden.
Du bekommst einen OutOfMemoryError, weil der Java-Speicher voll ist. Dieser beträgt soweit ich weiß Standard-mäßig 64 MB. Wenn du dann natürlich 50 MB von einer Datei schon im Speicher hast, ist das recht schell voll.
Eine Möglichkeit wäre, wenn du einfach den Java-Speicher erhöhst.
Code :1
java -Xmx256m MyApp
Eine weitere Möglichkeit wäre vielleicht (da ich nicht weiß was du machst), wenn du es nicht in den Speicher schreibst, sondern in ein Temp-File auf die Platte, dann ist die Speicherauslastung nicht so hoch.
MFG
zEriXEs ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)
Ähnliche Themen
-
ZipFile-Attribut aus byte-Array (ohne schreiben ins FileSystem)
Von rex_05 im Forum JavaAntworten: 12Letzter Beitrag: 13.04.10, 18:39 -
zipArchiv byte[] einlesen und in ein neues zipFile kopieren
Von Saskia21 im Forum JavaAntworten: 11Letzter Beitrag: 02.04.08, 21:17 -
Zipfile erstellen
Von magic_halli im Forum JavaAntworten: 1Letzter Beitrag: 09.11.07, 14:47 -
Objekt zu ByteArray
Von Snowcrack im Forum .NET DatenverwaltungAntworten: 6Letzter Beitrag: 19.09.07, 16:01 -
ByteArray wegschreiben
Von Reen_sc im Forum JavaAntworten: 0Letzter Beitrag: 25.10.06, 15:54






Zitieren

Login





