首页 > 其他分享 >GZIPUtils工具类

GZIPUtils工具类

时间:2023-05-31 23:03:05浏览次数:37  
标签:GZIPUtils return String bytes str new 工具 out

GZIPUtils.java工具类

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;

import org.apache.commons.codec.binary.StringUtils;


public class GZIPUtils {
    public static final String GZIP_ENCODE_UTF_8 = "UTF-8";

    public static final String GZIP_ENCODE_ISO_8859_1 = "ISO-8859-1";

    /**
     * 字符串压缩为GZIP字节数组
     *
     * @param str
     * @return
     */
    public static byte[] compress(String str) {
        return compress(str, GZIP_ENCODE_UTF_8);
    }

    /**
     * 字符串压缩为GZIP字节数组
     *
     * @param str
     * @param encoding
     * @return
     */
    public static byte[] compress(String str, String encoding) {
        if (str == null || str.length() == 0) {
            return null;
        }
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        GZIPOutputStream gzip;
        try {
            gzip = new GZIPOutputStream(out);
            gzip.write(str.getBytes(encoding));
            gzip.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return out.toByteArray();
    }

    /**
     * GZIP解压缩
     *
     * @param bytes
     * @return
     */
    public static byte[] uncompress(byte[] bytes) {
        if (bytes == null || bytes.length == 0) {
            return null;
        }
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        ByteArrayInputStream in = new ByteArrayInputStream(bytes);
        try {
            GZIPInputStream ungzip = new GZIPInputStream(in);
            byte[] buffer = new byte[256];
            int n;
            while ((n = ungzip.read(buffer)) >= 0) {
                out.write(buffer, 0, n);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        return out.toByteArray();
    }

    /**
     *
     * @param bytes
     * @return
     */
    public static String uncompressToString(byte[] bytes) {
        return uncompressToString(bytes, GZIP_ENCODE_UTF_8);
    }

    /**
     *
     * @param bytes
     * @param encoding
     * @return
     */
    public static String uncompressToString(byte[] bytes, String encoding) {
        if (bytes == null || bytes.length == 0) {
            return null;
        }
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        ByteArrayInputStream in = new ByteArrayInputStream(bytes);
        try {
            GZIPInputStream ungzip = new GZIPInputStream(in);
            byte[] buffer = new byte[256];
            int n;
            while ((n = ungzip.read(buffer)) >= 0) {
                out.write(buffer, 0, n);
            }
            return out.toString(encoding);
        } catch (IOException e) {
           e.printStackTrace();
        }
        return null;
    }

    public static void main(String[] args) {
        String str =
                "%5B%7B%22lastUpdateTime%22%3A%222011-10-28+9%3A39%3A41%22%2C%22smsList%22%3A%5B%7B%22liveState%22%3A%221";
        System.out.println("原长度:" + str.length());
        System.out.println("压缩后字符串:" + GZIPUtils.compress(str).toString().length());
        System.out.println("解压缩后字符串:" + StringUtils.newStringUtf8(GZIPUtils.uncompress(GZIPUtils.compress(str))));
        System.out.println("解压缩后字符串:" + GZIPUtils.uncompressToString(GZIPUtils.compress(str)));
    }

}

 

 

 

标签:GZIPUtils,return,String,bytes,str,new,工具,out
From: https://blog.51cto.com/lenglingx/6390811

相关文章

  • 开源.NetCore通用工具库Xmtool使用连载 - 发送短信篇
    【Github源码】《上一篇》介绍了Xmtool工具库中的发送邮件类库,今天我们继续为大家介绍其中的发送短信类库。发送短信就像发送邮件一样,在软件系统中使用非常普遍,甚至比发送邮件还要常见,有些甚至是软件标配功能;例如现在的短信验证码登录、通过短信找回密码等等。发送短信需要......
  • 源代码管理工具介绍博客
    源代码管理工具是用于跟踪和管理软件开发过程中的源代码的工具。它们提供了一种协作和版本控制的方法,使团队成员能够同时开发和修改代码,同时记录和跟踪代码的变更历史。以下是几个常见的源代码管理工具:Git:Git是目前最流行的分布式版本控制系统。它具有高效的分支和合并......
  • SoapUI、Jmeter、Postman三种接口测试工具的比较
    1. 用例组织方式首先是用例组织方式的不同,不同的目录结构与组织方式代表不同工具的测试思想,学习一个测试工具应该首先了解其组织方式。SoapUI的组织方式如下图,最上层是WorkSpace,每个窗口只可以打开一个WorkSpace(这是一个xml文件),每个Project也是一个单独的xml文件(为了协同工作,......
  • linux 文本分析工具---awk命令
    awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。awk有3个不同版本:awk、nawk和gawk,未作特别说明,一般指gawk,gawk是AWK的GNU......
  • 【2023 · CANN训练营第一季】——应用开发深入讲解——模型转换的ATC工具
    前言: 做一个推理应用,首先从模型转换开始(当然先得选好一个合适的模型)。在昇腾平台做模型推理,需要将Caffe,TensorFlow等开源框架网络模型转换成Davinci架构专用模型(OM格式)。昇腾张量编译器(AscendTensorCompiler,简称ATC)是异构计算架构CANN体系下的模型转换工具,模型转换过程中,ATC会进......
  • Linux网络性能评估工具iperf 、CHARIOT测试网络吞吐量
    网络性能评估主要是监测网络带宽的使用率,将网络带宽利用最大化是保证网络性能的基础,但是由于网络设计不合理、网络存在安全漏洞等原因,都会导致网络带宽利用率不高。要找到网络带宽利用率不高的原因,就需要对网络传输进行监控,此时就需要用到一些网络性能评估工具,而Iperf就是这样一款......
  • 【Gatling】性能测试工具的安装与负载测试
    一、官网https://gatling.io/open-source/ 二、安装JDK资料太多了,不写了https://jingyan.baidu.com/article/48b558e3f135687f38c09a03.html 三、安装Gatling 下载完解压,配置下环境变量Path即可 四、使用简单使用可以参考第一个链接  参考链接:什么是Gatling......
  • Android File Transfer for mac安卓文件传输工具
    AndroidFileTransferforMac是一款非常有用的软件,它提供了很多独特的功能,使得从Android设备向Mac电脑传输文件变得轻而易举。无论是从一个设备向另一个设备传输文件,还是管理Android设备上的文件,该软件都是一个很好的选择。如果您正在寻找一种简单而可靠的方法来传输文件,那么And......
  • Android monkey 健壮性测试工具
    简介Monkey是一个在模拟器或设备上运行的程序生成用户事件的伪随机流安装AndroidSDK提供了Monkey工具使用移动设备使用基本配置选项,例如设置事件数量操作约束,例如对指定的App进行测试事件类型和频率调试选项adbshellmonkey[options]常用命令adbshellm......
  • Hutool工具类属性汇总
    hutool工具类官网 API文档优点:Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。主要使用点日期的获取年月日等各种时间(DateUtil),两个类进行拷贝(BeanUtil)方法为copyProperties......