字符串压缩:
之前在做Android客户端开发的时候,需要请求一个字典类型的http请求接口,由于接口json数据过大,达到6M,当时建议后端对接口返回的json数据逻辑进行处理,在服务端将json串压缩,然后在客户端进行解压,最后在将数据显示在客户端。
Java实现字符串压缩API:
压缩算法有多种,我说知道和接触有java I/O自带的zip和gzip两种方式,此次的压缩和解压用到的主要就是GZIPOutputStream和GZIPInputStream类,看一下例子:
字符串压缩代码:
public static String compress(String source) {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try {
GZIPOutputStream gos = new GZIPOutputStream(bos);
gos.write(source.getBytes("ISO-8859-1"));
gos.close();
return bos.toString("ISO-8859-1");
} catch (IOException var3) {
System.out.println(var3.getStackTrace().toString());
return source;
}
}
字符串解压代码:
/****
* @Method compress 字符串解压方法
* @author source 需要传入待解压的字符串
* 返回值 返回解压后的字符串
****/
public static String uncompress(String source) {
if (source != null && source.length() != 0) {
try {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ByteArrayInputStream bis = new ByteArrayInputStream(source.getBytes("ISO-8859-1"));
GZIPInputStream gis = new GZIPInputStream(bis);
byte[] data = new byte[1024];
for(int len = gis.read(data); len != -1; len = gis.read(data)) {
bos.write(data, 0, len);
}
return bos.toString();
} catch (IOException var6) {
System.out.println(var6.getStackTrace().toString());
return source;
}
} else {
return source;
}
}
测试代码:
public static void main(String[] args) {
// 字符串超过一定的长度
String str = "ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggfdgfdgf"
+ "ggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg"
+ "gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggABCdef123中文~!@#$%^&*()_+{fd}"
+ ";/1111111111111111111111111AAAAAAAAAAAJDLFJDLFJDLFJLDFFFFJEIIIIIIIIIIFJJJJJJJJJJJJALLLLLLLLLLLLLLLLLLLLLLdddddddddddddddddfdfdfdfdfdfdd"
+ "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddessdfrdfdfd"
+ "ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd