因为觉得简单,本想抱着百度直接拿过来用的心态,结果发现网上的代码都转载自同一份,且埋了一个坑,你不仔细去梳理,很难发现。

mark下需要注意的两点:

1. 编码/解码,压缩/解压缩是成对出现的

编码:   byte[] by= "xxx".getBytes("utf-8");

解码:   String s=new String(by,"utf-8")

下面的代码遵循逻辑如下:

压缩方法:  先编码后压缩

解压缩方法:   先解压缩后解码

有童鞋想在压缩方法里返回String,结果直接new String("压缩后字符串",''utf-8),然后结果是打死都解压不出来原文。new String()是个解码的过程,压缩后得到字节数组不重新进行编码,解码有什么意义。

2.如果要对压缩方法返回字符串可以将字节数组转为16进制字符串,但是压缩的意义就没有了,因为内容大小基本没变

直接上代码:

package com.util;import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;public class GzipUtil {public static byte[] compress(String str)  {ByteArrayOutputStream out =null;GZIPOutputStream gzip=null;try{if (str == null || str.length() == 0) {return null;}out = new ByteArrayOutputStream();gzip = new GZIPOutputStream(out);gzip.write(str.getBytes("utf-8"));gzip.finish();return out.toByteArray();}catch(Exception e){e.printStackTrace();return null;}finally{try{if(out!=null){out.close();}if(gzip!=null){gzip.close();}}catch(Exception e){e.printStackTrace();}}}public static String unCompress(byte []by) {ByteArrayOutputStream out=null;GZIPInputStream gunzip=null;try{if(by==null || by.length==0){return "";}out=new ByteArrayOutputStream();gunzip= new GZIPInputStream(new ByteArrayInputStream(by));byte[] buffer = new byte[1024];int n;while ((n=gunzip.read(buffer))!=-1) {out.write(buffer, 0, n);}out.flush();return new String(out.toByteArray(),"utf-8");}catch(Exception e){e.printStackTrace();return "";}finally{try{if(out!=null){out.close();}if(gunzip!=null){gunzip.close();}}catch(Exception e){e.printStackTrace();}}}public static void main(String[] args) throws IOException {String str = "806715668,1091464537,1061006120,1142513520";System.out.println(str.getBytes("utf-8").length);System.out.println(compress(str).length);System.out.println(unCompress(compress(str)));}}

java gzip 压缩解压工具类相关推荐

  1. 【文件压缩解压工具类-含密码】

    文件压缩解压工具类-含密码 一.zip4j简介 二.zip4j工具类使用步骤 1.添加maven依赖 2.工具类代码 3.调用测试 三.结语 一.zip4j简介 zip4j功能比较强大,支持加密.解密 ...

  2. JAVA常见压缩包解压工具类(支持:zip、7z和rar)

    一.pom依赖 <groupId>org.apache.commons</groupId><artifactId>commons-compress</arti ...

  3. java的tgz解压工具类

    前言 之前在代码上一直使用的是对zip的解压,最近对接方居然使用了tgz的压缩包,在网上找了一个工具类,在项目测试,使用. 直接贴上tgz解压代码. public class PackDecompre ...

  4. Linux中压缩解压工具使用

    1.压缩原理 目前我们使用的计算机系统是使用bytes单位计量的,实际上,计算机中最小的计量单位是bits 1 byte = 8 bits 在这里插入图片描述 一个空格代表一个bit,1byte就是8 ...

  5. Linux gzip压缩/解压 *.gz文件详解

    gzip 是linux中常见的压缩/解压工具,最常见的使用对象是*.gz格式的文件,这里简单介绍下它最常见的用法, GZIP(1) General Commands Manual GZIP(1) NA ...

  6. xz压缩解压工具的安装

    高版本的tar是可以解压xz压缩包的,假如可以,可直接跳过小节.假如不能解压压缩的话,需要安装下面的步骤安装xz的压缩解压工具. 下载的时候总会出现*.xz的文件.这个文件压缩率比较大,根据官方的说明 ...

  7. GZip 压缩解压 --- Pako 的压缩解压

    一.GZip压缩解压 package java调用JS;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream ...

  8. Keka for Mac(压缩解压工具)中文破解版

    这里推荐一款非常实用的压缩解压工具Keka for Mac,全新版本的keka for mac 破解更换了新的logo,功能还是一样的好用,keka for mac 中文版可以轻松帮你压缩和解压各种格 ...

  9. 安利Keka for Mac(最好用的压缩解压工具)

    keka mac版是一款功能强大且易于使用的基于7za端口的macOS文件归档器,可以帮助您为您提供快速创建具有高压缩率的文件归档(7z,ISO,DMG,TAR,ZIP,Bzip2或Gzip).同时, ...

最新文章

  1. c语言随机延迟5-10秒,linux下写个C语言程序,要求有0.5微秒以下的延时,要怎样写...
  2. MQTT+ActiveMQ实现消息推送
  3. Oracle 中 call 和 exec的区别
  4. centos 安装 acrobat Reader之后
  5. java构造器_Java类加载的过程
  6. python定义私有变量的方法_Python类如何定义私有变量
  7. 这大概是今年最值得推荐的“数据分析工具”
  8. matlab 矩阵中的矩阵的特征值,当矩阵的所有条目都是变量时,如何在matlab中找出矩阵的特征值?...
  9. Ribbon和Feign的对比-带简易例子
  10. Angr安装与使用之使用篇(四)
  11. Java中的package、import、import static
  12. python人力成本数据测算_人工成本数据统计
  13. matlab igbt 关断,IGBT关断过程的分析
  14. XPI 文件安装方法
  15. 阿里云ECS运维:恶意程序告警及处理过程
  16. 超清视频制作:视频补帧+超分辨率
  17. 百度网盘直链下载助手 油猴脚本
  18. python写入指定的excel_python 写入Excel
  19. 德州仪器TI芯片自动下单抢购监控软件技术分析
  20. 网页动态蜘蛛网线条特效

热门文章

  1. 木马伪装“刷单任务” 劫持QQ语音暗中盗号
  2. DB2 的REORG_学习(2)_表重组
  3. 推荐一个强大的工作流自动化工具...
  4. Git安装【Windows环境安装配置】详细教程
  5. DataView详解
  6. 70行代码实现同花顺,通达信,麦语言大部分技术指标公式
  7. Matlab中的元胞数组
  8. 公路平曲线及主点桩号计算
  9. SAP BP屏幕增强页签
  10. 第三章习题3第4题--for循环输出俄文字母表