ERLEDIGT
NEIN
NEIN
ANTWORTEN
11
11
ZUGRIFFE
1937
1937
EMPFEHLEN
-
Hi
Ich lese ein ZipArchiv byteweise ein.
Dieses byte[] will ich wieder in ein zipArchiv umwandeln. So wie ich es gemacht habe ist es so, dass in dem ziparchiv nocheinmal das zipachriv enthalten ist, dass ich einlesen wollte, dass allerdings fehlerhaft ist und es enthält auch den eigentlichen Inhalt vom ZipArchiv
.
w.getDatabaseUpdate("111"); -> erzeugt ein Zip Archiv aus mehreren xml-dateienCode java:1 2 3 4 5
byte[] array = w.getDatabaseUpdate("111"); FileOutputStream f = new FileOutputStream("c:/zip.zip"); f.write(array); f.flush(); f.close();
-> liest das zip Archiv byteweise ein und übergibt es in einem byte[]
Eigentlich soll die Ordnerstruktur so sein:
archiv.zip
-a.xml
-b.xml
-c.xml
sie ist aber so:
archiv.zip
-blub.zip(das voher in der Methode erzeuge zip -> ist fehlerhaflt, lässt sich nicht öffnen)
-a.xml
-b.xml
-c.xml
Hoffe jemand weiß rat
LG
-
Hallo,
Ist das eine Klasse von dir? Falls ja, poste mal bitte, was diese Methode macht.Code :1
w.getDatabaseUpdate("111");
MFG
SaschaEs ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)
-
File zipArchiv = zipGenerator.createZip(); -> bei dem Aufruf bekomme ich ein zipArchiv mit mehreren xml-dateien. (Wäre zu viel es hier zu posten)Code java:
1 2 3 4 5 6 7 8 9
public byte[] getDatabaseUpdate(String hashcode) throws IOException { if(hc.checkHashCode(hashcode) == true){ File zipArchiv = zipGenerator.createZip(); System.out.println(zipArchiv.getName()); zipByte = changeToByte.changeToByte(zipArchiv); return zipByte; } return null; }
zipByte = changeToByte.changeToByte(zipArchiv); -> wird das File byteweise eingelesen
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
public byte[] changeToByte(File file) throws IOException { final ByteArrayOutputStream bo; final long length = file.length(); if (length < Integer.MAX_VALUE) { bo = new ByteArrayOutputStream((int) length); } else { bo = new ByteArrayOutputStream(Integer.MAX_VALUE); } final FileInputStream in = new FileInputStream(file); int c; while ((c = in.read()) != -1) { bo.write(c); } in.close(); bo.close(); final byte[] byteArray = bo.toByteArray(); return byteArray; }
-
Hast du mal kontrolliert, ob die Zip-Datei, die vom zipGenerator erstellt wird, schon richtig ist?
MFG
SaschaEs ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)
-
Ja die ist richtig. Es geht jetzt halt nur darum, wie ich diese date korrekt byteweise einlesen kann bzw. byteweise kopieren kann
-
Ich mache dir nachher mal ein Beispiel fertig.
MFG
SaschaEs ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)
-
Danke das ist total nett von dir. Also nochmal, dass die Frage klarer wird:
ich habe ein Zip Archiv erstellt.
Dieses ZipArchiv lese ich byteweise in ein byte[] ein.
Durch dieses byte[] will ich ein neues zip Achiv erstellen.
Die beiden Archive sollen vom Aufbau und Inhalt identisch sein, nur der Speicherort und ggf. die Namen sind unterschiedlich.
-
Also ich hab kein Archiv erstellt, sondern ein vorhandenes genommen.
Code java: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
import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; public class ZipByteExample { public static void main(String[] args) throws Exception { File zipFile = new File("I:/src.zip"); ByteArrayOutputStream bos = new ByteArrayOutputStream(); FileInputStream fis = new FileInputStream(zipFile); int i = 0; while((i=fis.read())!= -1){ bos.write(i); } fis.close(); bos.close(); byte[] zipFileBytes = bos.toByteArray(); FileOutputStream fos = new FileOutputStream("I:/teste.zip"); fos.write(zipFileBytes); fos.flush(); fos.close(); } }
Warum möchtest du es aber als ByteArray einlesen, hat das einen bestimmten Grund?
MFG
SaschaEs ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)
-
Ja, es werden Daten vom Server zum Client durch Webservice gesendet. Und diese Dateien übergebe ich byteweise. Hätte das auch mit soap attachment machen können, aber das hat mir immer fehler geschmießen....
Deshalb hatte man mir geraten das so zu machen.
LG
-
@Sascha: Warum postest du nochmal das was schon dasteht?

@Saskia: Ich nehme mal an dass deine Methode alles packt was in deinem Verzeichnis liegt, also neben deinen XML-Datei auch alte zip-Dateien die da noch rumliegen. Kann das sein?
-
habe nur versucht auf die Frage antworten:
Warum möchtest du es aber als ByteArray einlesen, hat das einen bestimmten Grund?
-
@zeja
Ich wollte nur was posten, wo ich sicher bin, dass es funktioniert.
Ich glaube nicht, dass es alte ZipDateien sind, sondern die aktuelle, die gerade erstellt wird.
Das würde auch erklären, warum das ZIP-Archiv im ZIP-Archiv nicht funktioniert.
MFG
SaschaEs 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 -
byte Array in Datei speichern und wieder in byte Array einlesen
Von riseX im Forum JavaAntworten: 5Letzter Beitrag: 22.02.10, 12:05 -
Flash files in neues dokument kopieren?
Von iGarfield im Forum Flash PlattformAntworten: 2Letzter Beitrag: 31.10.08, 01:30 -
Array kopieren und neues Feld hinzufügen
Von Morphinus21 im Forum JavaAntworten: 8Letzter Beitrag: 23.01.08, 11:50 -
Formularfelder aus Mail in neues Fenster kopieren
Von Superpet im Forum Javascript & AjaxAntworten: 2Letzter Beitrag: 23.02.04, 17:15





Zitieren


Login





