您的位置:首页 > 理论基础 > 计算机网络

http通信,Android Gzip压缩解压

2016-03-03 11:59 477 查看
import java.io.ByteArrayInputStream;

import java.io.ByteArrayOutputStream;

import java.io.IOException;

import java.util.zip.GZIPInputStream;

import java.util.zip.GZIPOutputStream;

/**

*

*开发公司:sojson.com<br/>

*版权:sojson.com<br/>

*<p>

*

*字符串压缩

*

*<p>

*

*区分 责任人 日期    说明<br/>

*创建 周柏成 2015年12月19日  <br/>

*<p>

********

*<p>

*@author zhou-baicheng

*@email  json@sojson.com

*@version 1.0,2015年12月19日 <br/>

*

*/

public class GZIP {


/**

*字符串的压缩

*

*@param str

*           待压缩的字符串

*@return 返回压缩后的字符串

*@throws IOException

*/

public static String compress(String str) throws IOException {

if (null == str || str.length() <= 0) {

return str;

}

// 创建一个新的 byte 数组输出流

ByteArrayOutputStream out = new ByteArrayOutputStream();

// 使用默认缓冲区大小创建新的输出流

GZIPOutputStream gzip = new GZIPOutputStream(out);

// 将 b.length 个字节写入此输出流

gzip.write(str.getBytes());

gzip.close();

// 使用指定的 charsetName,通过解码字节将缓冲区内容转换为字符串

return out.toString("UTF-8");

}


/**

*字符串的解压

*

*@param str

*           对字符串解压

*@return 返回解压缩后的字符串

*@throws IOException

*/

public static String unCompress(String str) throws IOException {

if (null == str || str.length() <= 0) {

return str;

}

// 创建一个新的 byte 数组输出流

ByteArrayOutputStream out = new ByteArrayOutputStream();

// 创建一个 ByteArrayInputStream,使用 buf 作为其缓冲区数组

ByteArrayInputStream in = new ByteArrayInputStream(str

.getBytes("UTF-8"));

// 使用默认缓冲区大小创建新的输入流

GZIPInputStream gzip = new GZIPInputStream(in);

byte[] buffer = new byte[256];

int n = 0;

while ((n = gzip.read(buffer)) >= 0) {// 将未压缩数据读入字节数组

// 将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此 byte数组输出流

out.write(buffer, 0, n);

}

// 使用指定的 charsetName,通过解码字节将缓冲区内容转换为字符串

return out.toString("UTF-8");

}


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: