java gzip 压缩解压工具类
因为觉得简单,本想抱着百度直接拿过来用的心态,结果发现网上的代码都转载自同一份,且埋了一个坑,你不仔细去梳理,很难发现。
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 压缩解压工具类相关推荐
- 【文件压缩解压工具类-含密码】
文件压缩解压工具类-含密码 一.zip4j简介 二.zip4j工具类使用步骤 1.添加maven依赖 2.工具类代码 3.调用测试 三.结语 一.zip4j简介 zip4j功能比较强大,支持加密.解密 ...
- JAVA常见压缩包解压工具类(支持:zip、7z和rar)
一.pom依赖 <groupId>org.apache.commons</groupId><artifactId>commons-compress</arti ...
- java的tgz解压工具类
前言 之前在代码上一直使用的是对zip的解压,最近对接方居然使用了tgz的压缩包,在网上找了一个工具类,在项目测试,使用. 直接贴上tgz解压代码. public class PackDecompre ...
- Linux中压缩解压工具使用
1.压缩原理 目前我们使用的计算机系统是使用bytes单位计量的,实际上,计算机中最小的计量单位是bits 1 byte = 8 bits 在这里插入图片描述 一个空格代表一个bit,1byte就是8 ...
- Linux gzip压缩/解压 *.gz文件详解
gzip 是linux中常见的压缩/解压工具,最常见的使用对象是*.gz格式的文件,这里简单介绍下它最常见的用法, GZIP(1) General Commands Manual GZIP(1) NA ...
- xz压缩解压工具的安装
高版本的tar是可以解压xz压缩包的,假如可以,可直接跳过小节.假如不能解压压缩的话,需要安装下面的步骤安装xz的压缩解压工具. 下载的时候总会出现*.xz的文件.这个文件压缩率比较大,根据官方的说明 ...
- GZip 压缩解压 --- Pako 的压缩解压
一.GZip压缩解压 package java调用JS;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream ...
- Keka for Mac(压缩解压工具)中文破解版
这里推荐一款非常实用的压缩解压工具Keka for Mac,全新版本的keka for mac 破解更换了新的logo,功能还是一样的好用,keka for mac 中文版可以轻松帮你压缩和解压各种格 ...
- 安利Keka for Mac(最好用的压缩解压工具)
keka mac版是一款功能强大且易于使用的基于7za端口的macOS文件归档器,可以帮助您为您提供快速创建具有高压缩率的文件归档(7z,ISO,DMG,TAR,ZIP,Bzip2或Gzip).同时, ...
最新文章
- c语言随机延迟5-10秒,linux下写个C语言程序,要求有0.5微秒以下的延时,要怎样写...
- MQTT+ActiveMQ实现消息推送
- Oracle 中 call 和 exec的区别
- centos 安装 acrobat Reader之后
- java构造器_Java类加载的过程
- python定义私有变量的方法_Python类如何定义私有变量
- 这大概是今年最值得推荐的“数据分析工具”
- matlab 矩阵中的矩阵的特征值,当矩阵的所有条目都是变量时,如何在matlab中找出矩阵的特征值?...
- Ribbon和Feign的对比-带简易例子
- Angr安装与使用之使用篇(四)
- Java中的package、import、import static
- python人力成本数据测算_人工成本数据统计
- matlab igbt 关断,IGBT关断过程的分析
- XPI 文件安装方法
- 阿里云ECS运维:恶意程序告警及处理过程
- 超清视频制作:视频补帧+超分辨率
- 百度网盘直链下载助手 油猴脚本
- python写入指定的excel_python 写入Excel
- 德州仪器TI芯片自动下单抢购监控软件技术分析
- 网页动态蜘蛛网线条特效