GZIP壓縮、解壓縮工具類:
public class GZIPUtiles { public static String compress(String str) throws IOException { if (null == str || str.length() <= 0) { return str; } // 創建一個新的輸出流 ByteArrayOutputStream out = new ByteArrayOutputStream(); // 使用默認緩沖區大小創建新的輸出流 GZIPOutputStream gzip = new GZIPOutputStream(out); // 將字節寫入此輸出流 gzip.write(str.getBytes("utf-8")); //因為后台默認字符集有可能是GBK字符集,所以此處需指定一個字符集 gzip.close(); // 使用指定的 charsetName,通過解碼字節將緩沖區內容轉換為字符串 return out.toString("ISO-8859-1"); } public static String unCompress(String str) throws IOException { if (null == str || str.length() <= 0) { return str; } // 創建一個新的輸出流 ByteArrayOutputStream out = new ByteArrayOutputStream(); // 創建一個 ByteArrayInputStream,使用 buf 作為其緩沖區數組 ByteArrayInputStream in = new ByteArrayInputStream(str.getBytes("ISO-8859-1")); // 使用默認緩沖區大小創建新的輸入流 GZIPInputStream gzip = new GZIPInputStream(in); byte[] buffer = new byte[256]; int n = 0; // 將未壓縮數據讀入字節數組 while ((n = gzip.read(buffer)) >= 0){ out.write(buffer, 0, n); } // 使用指定的 charsetName,通過解碼字節將緩沖區內容轉換為字符串 //String string = out.toString("utf-8"); //String unescapeJava = StringEscapeUtils.unescapeJava(string); return out.toString("utf-8"); } }
