Java Decompress a string compressed with zlib deflate

17,190

Solution 1

Try this - it is a minimal working example:

package zlib.example;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.util.Arrays;
import java.util.zip.Deflater;
import java.util.zip.DeflaterOutputStream;
import java.util.zip.InflaterInputStream;
/**
 * Created by keocra on 08.10.15.
 */
public class Main {
    private final static String inputStr = "Hello World!";
    public static void main(String[] args) throws Exception {
        System.out.println("Will zlib compress following string: " + inputStr);
        // will compress "Hello World!"
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        DeflaterOutputStream dos = new DeflaterOutputStream(baos);
        dos.write(inputStr.getBytes());
        dos.flush();
        dos.close();
        // at this moment baos.toByteArray() holds the compressed data of "Hello World!"
        // will decompress compressed "Hello World!"
        ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
        InflaterInputStream iis = new InflaterInputStream(bais);
        String result = "";
        byte[] buf = new byte[5];
        int rlen = -1;
        while ((rlen = iis.read(buf)) != -1) {
            result += new String(Arrays.copyOf(buf, rlen));
        }
        // now result will contain "Hello World!"
        System.out.println("Decompress result: " + result);
    }
}

You should also easily be able to extend this example to compress/decompress files.

Hope it helps ;-)

Further readings:

Solution 2

I found this article in Google, it explains how to compress and decompress in java using zlib, hope it helps

Share:
17,190
Admin
Author by

Admin

Updated on July 20, 2022

Comments

  • Admin
    Admin 3 months

    As the title says. How do you decompress a compressed string which was compressed with zlib deflate? What is the solid way of doing it with an explanation?