Hilfe beim Zippen und Entzippen von byte Arrays
-
Hallo zusammen
Ich brauche eure Hilfe.
Ich bin langsam verzweifelt und weis nicht mehr weiter.Ich habe ein grosses Problem mit dem Zippen und Entzippen von byte Arrays.
Das Programm macht folgendes.
Es wird ein JDOM Document in ein ByteArrayOutputStream geschrieben.
Dann wird das ByteArrayOutputStrem durch einen ZipOutputStream gezippt.Das klappt ja auch wunderbar.
Jetzt Werden die bytes an den Client über XML-RPC übertragen
Die Daten die jetzt beim Client ankommen liegen auch als byte Format da.
Jetzt kommt auch das wahre Problem.Ich will jetzt das byteArray zurückverwandeln.
Also byte[] -> ZipStream -> byte[] -> JDOM DocumentMein Problem ist es ich kann die gelesen bytes nicht umwandeln in String zum Beispiel.
Zur verständnis hier ein code auschnitt:
public static byte[] getZippedDocumentAsByte(Document doc) { //Document in ein von Stream lesbaren Format umwandeln XMLOutputter xmlwriter = new XMLOutputter(); ByteArrayOutputStream byteOutput = new ByteArrayOutputStream(100000); try { ZipOutputStream zipOut = new ZipOutputStream(byteOutput); zipOut.putNextEntry(new ZipEntry("Daten")); xmlwriter.output(doc, zipOut); } catch (IOException ex) {ex.printStackTrace();} return byteOutput.toByteArray(); }
Hier ein Code Beispiel vom enzippen
public static Document getEntzippedDocuemnt(byte[] byteIn) { ByteArrayInputStream byteArrayIn = new ByteArrayInputStream(byteIn); ZipInputStream zipIn = new ZipInputStream(byteArrayIn); try { ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(new File("Hallo.zip"))); ZipEntry entry = zipIn.getNextEntry(); int length = 0; byte[] buf = new byte[1024]; StringBuffer stringBuf = new StringBuffer(); while ( (length = zipIn.read(buf, 0, buf.length)) != 1) { for (int i = 0; i < length; i++) { stringBuf.append(Byte.toString(buf[i])); } System.out.println(stringBuf.toString()); } } catch (IOException ex) { ex.printStackTrace(); } return null; }
Kann mir bitte einer sagen wie ich es schaffe die daten so zu lesen das ich nachher String da habe.
Danke bye