We can compress the Object using DeflaterOutputStream and uncompress the same using InflaterInputStream.
Compression :
ByteArrayOutputStream buf = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(new DeflaterOutputStream(buf, new Deflater(Deflater.BEST_COMPRESSION)));
out.writeObject(object);
egsZippedObject = new EGSZippedObject(buf.toByteArray());
public class EGSZippedObject implements Serializable{
private byte[] byteArray = null;
public EGSZippedObject(byte[] byteArray) throws Exception {
setByteArray(byteArray);
}
public void setByteArray(byte[] byteArray) {
this.byteArray = byteArray;
}
public byte[] getByteArray() {
return byteArray;
}
}
Uncompression :
ByteArrayInputStream buf = null;
ObjectInputStream in = null;
R retVal = null;
buf = new ByteArrayInputStream(egsZippedObject.getByteArray());
in = new ObjectInputStream(new InflaterInputStream(buf));
retVal = (R) in.readObject();