Decompressing a string using Java.util.zip.Inflater

I am trying to decode the string I am getting. It's deflated compressed here: https://github.com/dankogai/js-deflate And then base64 encoded.

However, when I use java inflater, I get the following error: unknown compression method.

    import sun.misc.BASE64Decoder;

    public void org() throws Exception{
    BASE64Decoder decoder = new BASE64Decoder();

    try {      

         String inputString = "84VWAVDY";
         byte[] decodedByteArray = decoder.decodeBuffer(inputString);

         // Decompress the bytes
         Inflater decompresser = new Inflater();
         decompresser.setInput(decodedByteArray);
         byte[] result = new byte[100];

         int resultLength = decompresser.inflate(result);
         decompresser.end();

         // Decode the bytes into a String
         String outputString = new String(result, 0, resultLength);
         System.out.println("OUTPUT:" + outputString);

    } catch (Exception e){
        System.out.println("Exception: " + e);
    }
}

      

This code is basically a copy / paste from the Java API. I also tried using the new Inflater (true); Ie nowrap

"Note: When using the nowrap option, you also need to provide an extra dummy byte as input. This is required by the native ZLIB to support certain optimizations."

So where does this dummy byte have to be added? At the beginning or end of "byte [] decodedByteArray"?

So, any ideas how to fix this problem? Do I only need to add a dummy byte, do I need to use other methods, etc.?

Well this, I think all help is appreciated!

Hello

John

+3


source to share


2 answers


A dummy byte will be added at the end. However, this is only needed for zlib 1.1.4 and earlier. The current versions of zlib are not needed. I'm not sure which version of zlib the java.util.zip is using.



+4


source


The base64 decoding "84VWAVDY" (f3 85 56 01 50 d8) is not a valid raw deflate stream, nor is it a valid streamlined stream (zlib or gzip). So no matter what, you won't have any fun trying to inflate this data.



+4


source







All Articles