-
Servus Leute,
ich hab da ein kleines Problem mit dem packen von Dateien direkt aus einem Archiv in ein zweites.
Ich weiß, wie ich die Dateien von einem Archiv entpacken kann und dann die Dateien aus dem betimmten Verzeichnis wieder in ein neues Archiv packen kann, aber ich würde diesen Schritt gerne umgehen und direkt die Dateien aus dem ersten Archiv in das zweite Archiv schieben. Ich weiß nur nicht, wie ich die Dateien ansprechen kann, weil nur mit "ZipEntry.getName()" klappt das ganze nicht.
Ist das möglich oder geht das nur über den Umweg entpacken -> neu packen
-
Versuch mal mit einem ZipInputStream vom Zip zu lesen. Dort kommst du mit nextEntry immer einen Eintrag weiter. Von nem Entry kannst du dir mit getSize die Länge geben lassen und dann auf den InputStream mit read dieses Entry in ein ByteArray einlesen und dieses dann mit nem ZipOutputStream wieder schreiben. Mit skip kannst du Einträge überspringen die dich nicht interessieren. Ob das so wirklich effizient ist weiß ich allerdings nicht. Kannst ja mal probieren
-
02.04.08 21:29 #3
- Registriert seit
- May 2005
- Beiträge
- 4.171
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
import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.Enumeration; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; import java.util.zip.ZipOutputStream; public class ZipFileExample { /** * @param args */ public static void main(String[] args) throws Exception { File archiveFile = new File("/home/sash/Downloads/Firefox/jdk-6-doc.zip"); copy(archiveFile); } public static void copy(File archiveFile) throws Exception { File newFile = new File("/home/sash/NewZip.zip"); ZipFile zipSrc = new ZipFile(archiveFile); ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(newFile)); Enumeration srcEntries = zipSrc.entries(); while (srcEntries.hasMoreElements()) { ZipEntry entry = (ZipEntry) srcEntries.nextElement(); ZipEntry newEntry = new ZipEntry(entry.getName()); zos.putNextEntry(newEntry); BufferedInputStream bis = new BufferedInputStream(zipSrc .getInputStream(entry)); while (bis.available() > 0) { zos.write(bis.read()); } zos.closeEntry(); bis.close(); } zos.finish(); zos.close(); zipSrc.close(); } }
Du musst jetzt nur noch eine IF-Anweisung reinpacken und damit dann nur die Entries wählen, die auch ins neue File rein sollen. Im Moment werden einfach alle reingepackt.
MFG
SaschaNiveau von unten betrachtet wird meistens mit Arroganz verwechselt. ;-)
Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)
-
Servus,
hey Leute vielen Dank für die Hilfe.
@Sascha Schirra: Super Code, funktioniert einwandfrei. Besten Dank
Ähnliche Themen
-
Zip-Archiv erstellen
Von sebastianv im Forum PHPAntworten: 7Letzter Beitrag: 03.05.06, 18:22 -
.ZIP Archiv erstellen
Von proprogger im Forum .NET DatenverwaltungAntworten: 2Letzter Beitrag: 08.01.06, 18:01 -
zip.lib.php - Zu großes Zip-Archiv in Datei auslagern..
Von Scope im Forum PHPAntworten: 1Letzter Beitrag: 15.08.05, 15:52 -
Dateien in ein Zip-Archiv hinzufügen
Von Sascha Schirra im Forum JavaAntworten: 10Letzter Beitrag: 01.06.05, 19:43 -
ZIP-Archiv kaputt
Von ElFunghi im Forum Microsoft WindowsAntworten: 4Letzter Beitrag: 11.04.03, 00:45



Zitieren


Login





Lesezeichen