public final class GZipUtil {
public static final int BUFFER = 10240;
public static byte[] gzipCompress(byte[] data) {
ByteArrayOutputStream byteOutput = new ByteArrayOutputStream(BUFFER);
GZIPOutputStream output = null;
try {
output = new GZIPOutputStream(byteOutput);
output.write(data);
} catch (IOException e) {
throw new RuntimeException("G-Zip failed.", e);
} finally {
if (output != null) {
try {
output.close();
} catch (IOException e) {
}
}
}
return byteOutput.toByteArray();
}
public static byte[] gzipDecompress(byte[] data) throws Exception {
ByteArrayInputStream bais = new ByteArrayInputStream(data);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
GZIPInputStream gis = new GZIPInputStream(bais);
int count;
data = new byte[BUFFER];
while ((count = gis.read(data, 0, BUFFER)) != -1) {
baos.write(data, 0, count);
}
data = baos.toByteArray();
gis.close();
baos.flush();
baos.close();
bais.close();
return data;
}
public static void main(String[] args) throws Exception {
String data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
System.out.println("原始数据大小:" + data.getBytes().length); //114
System.out.println("压缩数据大小:" + gzipCompress(data.getBytes()).length); //24
System.out.println("解压数据大小:" + gzipDecompress(gzipCompress(data.getBytes())).length); //114
}
}
转载于:https://my.oschina.net/tdd/blog/370367