package com.wangyin.ak47.common; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream; /** * Compress-related helper class * * 压缩相关操作 * * @author wyhubingyin * */ public class CompressUtil { public static final int READ_BUFFER_SIZE = 1024 * 8; /** * GZIP compression * * GZIP压缩 * * @param content source bytes to be compressed * @return compressed bytes * @throws IOException i/o wrong */ public static byte[] compressGzip(byte[] content) throws IOException { ByteArrayOutputStream bos = new ByteArrayOutputStream(); GZIPOutputStream gos = new GZIPOutputStream(bos); try { gos.write(content); gos.flush(); } finally { gos.close(); } return bos.toByteArray(); } /** * GZIP decompression * * GZIP解压 * * @param compressed sources bytes to be decompressed * @return decompressed bytes * @throws IOException i/o wrong */ public static byte[] decompressGzip(byte[] compressed) throws IOException { ByteArrayOutputStream bos = new ByteArrayOutputStream(); ByteArrayInputStream bis = new ByteArrayInputStream(compressed); GZIPInputStream gis = new GZIPInputStream(bis); try { byte[] buffer = new byte[READ_BUFFER_SIZE]; int read = 0; while ((read = gis.read(buffer)) != -1) { bos.write(buffer, 0, read); } } finally { gis.close(); } return bos.toByteArray(); } }