GZIP資料壓縮/解壓工具
阿新 • • 發佈:2019-01-05
GZIP概念
GZIP最早由Jean-loup Gailly和Mark Adler建立,用於UNⅨ系統的檔案壓縮。我們在Linux中經常會用到字尾為.gz的檔案,它們就是GZIP格式的。現今已經成為Internet 上使用非常普遍的一種資料壓縮格式,或者說一種檔案格式。
HTTP協議上的GZIP編碼是一種用來改進WEB應用程式效能的技術。大流量的WEB站點常常使用GZIP壓縮技術來讓使用者感受更快的速度。這一般是指WWW伺服器中安裝的一個功能,當有人來訪問這個伺服器中的網站時,伺服器中的這個功能就將網頁內容壓縮後傳輸到來訪的電腦瀏覽器中顯示出來.一般對純文字內容可壓縮到原大小的40%.這樣傳輸就快了,效果就是你點選網址後會很快的顯示出來.當然這也會增加伺服器的負載. 一般伺服器中都安裝有這個功能模組的。
/**
* gzipStream 壓縮資料
*
* @param
**/
public static String compress(String mStr) {
if (TextUtils.isEmpty(mStr)) {
return null;
}
try {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
gzipStreamOutputStream gzipStream = new gzipStreamOutputStream(outputStream);
gzipStream.write(mStr.getBytes());
gzipStream.close();
byte[] encode = outputStream.toByteArray();
outputStream.flush();
outputStream.close();
return Base64Encoder.encode(encode);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/** gzipStream 解壓資料
*
* @param gzipStr
* @return
**/
public static String decompress(String gzipStr) {
if (TextUtils.isEmpty(gzipStr)) {
return null;
}
byte[] t = Base64Decoder.decodeToBytes(gzipStr);
try {
ByteArrayOutputStream out = new ByteArrayOutputStream();
ByteArrayInputStream in = new ByteArrayInputStream(t);
gzipStreamInputStream gzipStream = new gzipStreamInputStream(in);
byte[] buffer = new byte[BUFFERSIZE];
int n = 0;
while ((n = gzipStream.read(buffer, 0, buffer.length)) > 0) {
out.write(buffer, 0, n);
}
gzipStream.close();
in.close();
out.close();
return out.toString();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}