GZIP壓縮解壓Java類代碼

fmms 12年前發布 | 33K 次閱讀 常用工具包 gzip

  當我們客戶端與服務端進行數據傳輸時需要走流量,為了節省流量我們常常需要寫一個壓縮類對數據進行壓縮。

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;

/**

  • GZIP壓縮解壓類 */ public class MessageGZIP {

    private static String encode = "utf-8";//"ISO-8859-1"

    public String getEncode() {

     return encode;
    

    }

    /*

    • 設置 編碼,默認編碼:UTF-8 */ public void setEncode(String encode) { MessageGZIP.encode = encode; }

      /*

    • 字符串壓縮為字節數組 */ public static byte[] compressToByte(String str){ if (str == null || str.length() == 0) {

       return null;
      

      } ByteArrayOutputStream out = new ByteArrayOutputStream(); GZIPOutputStream gzip; try {

       gzip = new GZIPOutputStream(out);
       gzip.write(str.getBytes(encode));
       gzip.close();
      

      } catch (IOException e) {

       e.printStackTrace();
      

      } return out.toByteArray(); }

      /*

    • 字符串壓縮為字節數組 */ public static byte[] compressToByte(String str,String encoding){ if (str == null || str.length() == 0) {

       return null;
      

      } ByteArrayOutputStream out = new ByteArrayOutputStream(); GZIPOutputStream gzip; try {

       gzip = new GZIPOutputStream(out);
       gzip.write(str.getBytes(encoding));
       gzip.close();
      

      } catch (IOException e) {

       e.printStackTrace();
      

      } return out.toByteArray(); }

      /*

    • 字節數組解壓縮后返回字符串 */ public static String uncompressToString(byte[] b) { if (b == null || b.length == 0) {

       return null;
      

      } ByteArrayOutputStream out = new ByteArrayOutputStream(); ByteArrayInputStream in = new ByteArrayInputStream(b);

      try {

       GZIPInputStream gunzip = new GZIPInputStream(in);
       byte[] buffer = new byte[256];
       int n;
       while ((n = gunzip.read(buffer)) >= 0) {
           out.write(buffer, 0, n);
       }
      

      } catch (IOException e) {

       e.printStackTrace();
      

      } return out.toString(); }

      /*

    • 字節數組解壓縮后返回字符串 */ public static String uncompressToString(byte[] b, String encoding) { if (b == null || b.length == 0) {

       return null;
      

      } ByteArrayOutputStream out = new ByteArrayOutputStream(); ByteArrayInputStream in = new ByteArrayInputStream(b);

      try {

       GZIPInputStream 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(encoding);
      

      } catch (IOException e) {

       e.printStackTrace();
      

      } return null; } }</pre>

 本文由用戶 fmms 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!