欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用flaterStream对字符串压缩及解压缩

程序员文章站 2022-04-30 22:42:02
...

在前后台进行交互时,当页面的PV量较大,为了减少带宽流量的消耗,有必要对前后台传输的字符串进行压缩,如果1天有1亿的PV,那么一天就能产生4TB的带宽流量了,从节省带宽成本来说,压缩还是很有必要的。

使用 DeflaterOutputStream 压缩字符串

使用flaterStream对字符串压缩及解压缩

结果

使用flaterStream对字符串压缩及解压缩

@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 解压缩

使用flaterStream对字符串压缩及解压缩

结果

使用flaterStream对字符串压缩及解压缩

@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();
    }