/** * ======================================================== * 日 期:2011-12-28 上午11:03:24 * 作 者:张纪豪 * 版 本:1.0.0 * ======================================================== * 修订日期 修订人 描述 * */ package org.howsun.util; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.UnsupportedEncodingException; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream; import org.howsun.util.security.Codings; /** * 功能描述: * * @author howsun(howsun.zhang@google.com) * @version 1.0.0 */ public abstract class Compressor{ /** * 压缩流,节省传输资源 * * @return */ public static String compressStream(String src){ if(!Strings.hasLength(src)){return src;} ByteArrayOutputStream baos = null; GZIPOutputStream gzip = null; try { baos = new ByteArrayOutputStream(); gzip = new GZIPOutputStream(baos); gzip.write(src.getBytes("UTF-8")); gzip.finish(); return Codings.base64Encode(baos.toByteArray()); } catch (Exception e) { e.printStackTrace(); } finally{ if(gzip != null){ try {gzip.close();} catch (Exception e2) {} } if(baos != null){ try {baos.close();} catch (Exception e2) {} } } return null; } // 解压缩 public static String unCompressStream(String src){ if(!Strings.hasLength(src)){return src;} ByteArrayInputStream in = null; GZIPInputStream gunzip = null; ByteArrayOutputStream out = null; try { out = new ByteArrayOutputStream(); in = new ByteArrayInputStream(Codings.base64Decode(src)); gunzip = new GZIPInputStream(in); byte[] buffer = new byte[256]; int n; while ((n = gunzip.read(buffer)) >= 0) { out.write(buffer, 0, n); } return out.toString("UTF-8"); } catch (Exception e) { e.printStackTrace(); } finally{ if(out != null){ try {out.close();} catch (Exception e2) {} } if(gunzip != null){ try {gunzip.close();} catch (Exception e2) {} } if(in != null){ try {in.close();} catch (Exception e2) {} } } return src; } public static void main(String[] args) throws Exception { String t = "7b227374617465223a312c22636f6e74656e74223a223c703e3c7370616e2069643d5c22636f6d702d70617374652d6469762d323730365c223ee794b5e88491e4bd8ee4bbb7e587bae594ae3c7370616e2069643d5c22636f6d702d70617374652d6469762d323730365c223ee794b5e88491e4bd8ee4bbb7e587bae594ae3c2f7370616e3e3c2f7370616e3e3c62723e3c2f703e222c22736f75726365223a302c2275726c223a22687474703a2f2f626a2e35382e636f6d2f6469616e6e616f2f222c22656d61696c223a22222c22746167223a22222c22706172616d73223a225b7b5c22495c223a313232332c5c22565c223a5c22305c227d2c7b5c22495c223a313232342c5c22565c223a5c22305c227d2c7b5c22495c223a313232352c5c22565c223a5c22365c227d2c7b5c22495c223a313232362c5c22565c223a5c2239393939395c227d2c7b5c22495c223a353632312c5c22565c223a5c22333530315f3939393939395c227d2c7b5c22495c223a353333322c5c22565c223a5c22e8bdace8aea97ce58fb0e5bc8fe69cba7c36e68890e4bba5e4b88b7c3939393939e585835c227d2c7b5c22495c223a353333332c5c22565c223a5c22e9bb84e58588e7949f5c227d2c7b5c22495c223a353436312c5c22565c223a5c22747970653d25453825424425414325453825414525413926616d703b6f626a656374747970653d25453525384625423025453525424325384625453625394325424126616d703b6f6c646c6576656c3d3625453625383825393025453425424225413525453425423825384226616d703b6d696e7072696365716a3d333530302545352538352538332545342542422541352545342542382538415c227d2c7b5c22495c223a353932332c5c22565c223a5c223337373639333835305c227d5d222c22736f72744944223a3337373639333835302c2270617261223a5b7b2276616c7565223a7b22706172616d6574657256616c7565223a2230222c22696e666f4944223a383233363636373037393239382c22706172616d657465724944223a313232337d2c226b6579223a2231323233227d2c7b2276616c7565223a7b22706172616d6574657256616c7565223a2230222c22696e666f4944223a383233363636373037393239382c22706172616d657465724944223a313232347d2c226b6579223a2231323234227d2c7b2276616c7565223a7b22706172616d6574657256616c7565223a2236222c22696e666f4944223a383233363636373037393239382c22706172616d657465724944223a313232357d2c226b6579223a2231323235227d2c7b2276616c7565223a7b22706172616d6574657256616c7565223a223939393939222c22696e666f4944223a383233363636373037393239382c22706172616d657465724944223a313232367d2c226b6579223a2231323236227d2c7b2276616c7565223a7b22706172616d6574657256616c7565223a22333530315f393939393939222c22696e666f4944223a383233363636373037393239382c22706172616d657465724944223a353632317d2c226b6579223a2235363231227d2c7b2276616c7565223a7b22706172616d6574657256616c7565223a22e8bdace8aea97ce58fb0e5bc8fe69cba7c36e68890e4bba5e4b88b7c3939393939e58583222c22696e666f4944223a383233363636373037393239382c22706172616d657465724944223a353333327d2c226b6579223a2235333332227d2c7b2276616c7565223a7b22706172616d6574657256616c7565223a22e9bb84e58588e7949f222c22696e666f4944223a383233363636373037393239382c22706172616d657465724944223a353333337d2c226b6579223a2235333333227d2c7b2276616c7565223a7b22706172616d6574657256616c7565223a22747970653d25453825424425414325453825414525413926616d703b6f626a656374747970653d25453525384625423025453525424325384625453625394325424126616d703b6f6c646c6576656c3d3625453625383825393025453425424225413525453425423825384226616d703b6d696e7072696365716a3d33353030254535253835253833254534254242254135254534254238253841222c22696e666f4944223a383233363636373037393239382c22706172616d657465724944223a353436317d2c226b6579223a2235343631227d2c7b2276616c7565223a7b22706172616d6574657256616c7565223a22333737363933383530222c22696e666f4944223a383233363636373037393239382c22706172616d657465724944223a353932337d2c226b6579223a2235393233227d5d2c226c6f63616c223a5b7b22646973704c6f63616c4944223a313230302c22696e666f4944223a383233363636373037393239382c22696e666f4c6f63616c4944223a302c226c6f63616c4944223a313230307d2c7b22646973704c6f63616c4944223a383732382c22696e666f4944223a383233363636373037393239382c22696e666f4c6f63616c4944223a302c226c6f63616c4944223a383730367d5d2c22696e666f4944223a383233363636373037393239382c2270686f6e65223a223135383031363436333630222c22636174654944223a33352c227469746c65223a22e794b5e88491e4bd8ee4bbb7e587bae594ae222c2261646444617465223a313332343334383633343135372c22706f737444617465223a313332343334393835303639302c2265666665637469766544617465223a313332343935343635303639302c226c6f63616c73223a225b7b5c22445c223a313230302c5c224c5c223a313230307d2c7b5c22445c223a383732382c5c224c5c223a383730367d5d222c22757365724944223a333831333438313736313533372c22757365724950223a2231302e35382e32372e3134222c22706963223a22222c22696d223a22222c22686964654974656d223a22222c22696e666f54797065223a302c22697342697a223a66616c73652c2275736572546167223a22227d"; System.out.println("16位转换结果长度:"+t.getBytes("UTF-8").length); String s = new String(Codings.hexDecode(t)); System.out.println("原串长度:"+s.getBytes("UTF-8").length); String c = compressStream(s); System.out.println("压缩串:"+c); System.out.println("压缩长度:"+c.getBytes().length); String hc = Codings.hexEncode(c.getBytes()); System.out.println(hc); System.out.println("压缩后转16位长度:"+hc.getBytes("UTF-8").length); String un = unCompressStream(c); System.out.println(un); System.out.println("反压缩长度:"+un.getBytes("UTF-8").length); } }