首頁  >  文章  >  Java  >  java中GZIP壓縮解壓縮類別的使用範例程式碼分享

java中GZIP壓縮解壓縮類別的使用範例程式碼分享

黄舟
黄舟原創
2017-03-21 10:38:191573瀏覽

這篇文章主要介紹了java中GZIP壓縮解壓類別使用實例的相關資料,需要的朋友可以參考下

java中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; 
  } 
}

以上是java中GZIP壓縮解壓縮類別的使用範例程式碼分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn