| 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(); | 
|     } | 
|   | 
| } |