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