package fi.csc.emrex.smp;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
/**
* Created by marko.hollanti on 07/10/15.
*/
public class GzipUtil {
public static byte[] compress(String string) throws IOException {
ByteArrayOutputStream os = new ByteArrayOutputStream(string.length());
GZIPOutputStream gos = new GZIPOutputStream(os);
gos.write(string.getBytes());
gos.close();
byte[] compressed = os.toByteArray();
os.close();
return compressed;
}
public static String gzipDecompress(byte[] compressed) throws IOException {
byte[] bytes = gzipDecompressBytes(compressed);
return new String(bytes, StandardCharsets.UTF_8);
}
public static byte[] gzipDecompressBytes(byte[] compressed) throws IOException {
ByteArrayOutputStream os = new ByteArrayOutputStream();
final int BUFFER_SIZE = 32;
ByteArrayInputStream is = new ByteArrayInputStream(compressed);
GZIPInputStream gis = new GZIPInputStream(is, BUFFER_SIZE);
byte[] data = new byte[BUFFER_SIZE];
int bytesRead;
while ((bytesRead = gis.read(data)) != -1) {
os.write(data, 0, bytesRead);
}
gis.close();
return os.toByteArray();
}
}