使用flaterStream对字符串压缩及解压缩
程序员文章站
2022-04-30 22:42:02
...
在前后台进行交互时,当页面的PV量较大,为了减少带宽流量的消耗,有必要对前后台传输的字符串进行压缩,如果1天有1亿的PV,那么一天就能产生4TB的带宽流量了,从节省带宽成本来说,压缩还是很有必要的。
使用 DeflaterOutputStream 压缩字符串
结果
@Test
// 使用 DeflaterOutputStream 压缩字符串
public void test3() throws IOException {
String s ="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadewfwefwerfwefweffffffffffffffffffffffweqweeeeeeeeeeeee";
ByteArrayOutputStream bos;
bos = new ByteArrayOutputStream();
Base64.Encoder encoder = Base64.getEncoder();
DeflaterOutputStream dos = new DeflaterOutputStream(bos);
dos.write(s.getBytes());
dos.close();
System.out.println("压缩前长度:" + s.getBytes().length);
String s1 = encoder.encodeToString(bos.toByteArray());
System.out.println("压缩后长度:" + s1.length());
System.out.println("压缩后的字符串:" + s1);
}
使用InflaterInputStream 解压缩
结果
@Test
//使用 InflaterInputStream 解压
public void test4() throws IOException {
String s ="eJxLTCQBpKSWp5WnAlERhErDCspTC8tTkQEAqzEncQ==";
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] decode = Base64.getDecoder().decode(s);
ByteArrayInputStream bis = new ByteArrayInputStream(decode);
InflaterInputStream inflater = new InflaterInputStream(bis);
byte[] b = new byte[1024];
int count;
while ((count = inflater.read(b)) >=0){
out.write(b, 0, count);
}
inflater.close();
System.out.println(out.toByteArray().length);
System.out.println(new String(out.toByteArray()));
out.flush();
out.close();
}
上一篇: 文件压缩(二)——英文字符串的处理
下一篇: 压缩字符串