GZIP壓縮解壓Java類代碼
當我們客戶端與服務端進行數據傳輸時需要走流量,為了節省流量我們常常需要寫一個壓縮類對數據進行壓縮。
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>