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 Document

    Mein 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


Anmelden zum Antworten