package cn.emay.sdk.util; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream; /** * GZIP 压缩工具 * @author Frank * */ public class GZIPUtils { public static void main(String[] args) throws IOException { String sst = "hahahah"; System.out.println(sst); System.out.println(System.currentTimeMillis()); System.out.println("size:" + sst.length()); byte[] bytes = sst.getBytes(); System.out.println("length:" + bytes.length); System.out.println(System.currentTimeMillis()); byte[] end = compress(bytes); System.out.println(System.currentTimeMillis()); System.out.println("length:" + end.length); System.out.println(System.currentTimeMillis()); byte[] start = decompress(end); System.out.println(System.currentTimeMillis()); System.out.println("length:" + start.length); System.out.println(new String(start)); } /** * 数据压缩传输 * * @param is * @param os * @throws Exception */ public static void compressTransfe(byte[] bytes, OutputStream out) throws IOException { GZIPOutputStream gos = null; try { gos = new GZIPOutputStream(out); gos.write(bytes); gos.finish(); gos.flush(); } finally{ if(gos != null){ gos.close(); } } } /** * 数据压缩 * * @param is * @param os * @throws Exception */ public static byte[] compress(byte[] bytes) throws IOException { ByteArrayOutputStream out = null; GZIPOutputStream gos = null; try { out = new ByteArrayOutputStream(); gos = new GZIPOutputStream(out); gos.write(bytes); gos.finish(); gos.flush(); } finally{ if(gos != null){ gos.close(); } if(out != null){ out.close(); } } return out.toByteArray(); } /** * 数据解压 * * @param in * @return * @throws IOException */ public static byte[] decompress(byte[] bytes) throws IOException { ByteArrayInputStream in = new ByteArrayInputStream(bytes); GZIPInputStream gin = new GZIPInputStream(in); ByteArrayOutputStream out = new ByteArrayOutputStream(); int count; byte data[] = new byte[1024]; while ((count = gin.read(data, 0, 1024)) != -1) { out.write(data, 0, count); } out.flush(); out.close(); gin.close(); return out.toByteArray(); } }