Deflater与Inflater的压缩与解压缩
package util; import java.util.Arrays;
import java.util.zip.Deflater;
import java.util.zip.Inflater; import org.apache.commons.codec.binary.Base64; public class StringZlibUtil { /**
* 用zlib压缩
* @param message
* @return
* @throws Exception
*/
public static byte[] zlibCompress(String message)throws Exception
{
String chatacter="UTF-8";
byte[] input = message.getBytes(chatacter);
System.out.println("input length "+input.length);
byte[] output = new byte[input.length+10+new Double(Math.ceil(input.length*0.25f)).intValue()];
System.out.println(output.length);
Deflater compresser = new Deflater();
compresser.setInput(input);
compresser.finish();
int compressedDataLength = compresser.deflate(output);
System.out.println("compressedDataLength "+compressedDataLength);
compresser.end();
//String ostr=new String(output,0,compressedDataLength,chatacter);
//System.out.println("out str "+ostr);
return Arrays.copyOf(output, compressedDataLength);
}
/**
* 解压缩
* @param barr 需要解压缩的字节数组
* @param charater 对应压缩时的编码方式
* @return
* @throws Exception
*/
public static byte[] zlibInfCompress(byte[] barr,String charater)throws Exception{
byte[] result=new byte[2014];
Inflater inf=new Inflater();
inf.setInput(barr);
int infLen=inf.inflate(result);
inf.end();
String strOgr=new String(result,charater);
System.out.println("str ogr "+strOgr);
return Arrays.copyOf(result, infLen);
}
public static void main(String[] args)throws Exception{ String str="abcde|qqqqqqqqqqqqqqq|wwwwwwwwwwwwwwwwwwww";
//方法一:
/*byte[] def=StringZlibUtil.zlibCompress(str);
byte[] inf=StringZlibUtil.zlibInfCompress(def, "UTF-8");
String strOgr=new String(inf,"UTF-8");
System.out.println("str org main "+strOgr);*/ //方法二:以下是使用基本base64的编码与解码
byte[] def=StringZlibUtil.zlibCompress(str);
String strBase=Base64.encodeBase64String(def);
System.out.println("str base64 string "+strBase);
byte[] decStr=Base64.decodeBase64(strBase);
byte[] decode_str=StringZlibUtil.zlibInfCompress(decStr, "UTF-8");
String decStrOgr=new String(decode_str,"UTF-8");
System.out.println("decStrOgr "+decStrOgr);
}
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
Deflater与Inflater的压缩与解压缩的更多相关文章
- 利用JAVA API函数实现数据的压缩与解压缩
综述 许多信息资料都或多或少的包含一些多余的数据.通常会导致在客户端与服务器之间,应用程序与计算机之间极大的数据传输量.最常见的解决数据存储和信息传送的方法是安装额外的存储设备和扩展现有的通讯能力 ...
- Java 基础【12】 压缩与解压缩
Java.util.zip 提供用于读写标准 ZIP 和 GZIP 文件格式的类. 还包括使用 DEFLATE 压缩算法(用于 ZIP 和 GZIP 文件格式)对数据进行压缩和解压缩的类. 依赖 Jd ...
- 菜鸟学Linux命令:tar命令 压缩与解压缩
tar命令可以为linux的文件和目录创建档案.利用tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件. tar最初被用来在磁带上创建档案,现在,用户可以 ...
- Linux系统之压缩、解压缩,vi编辑器,系统初始化服务和系统监控
一.正文处理,压缩与解压缩 1.内容重定向>与>> >:覆盖,将>号左边的结果覆盖到>号右边的文件中,如果文件不存在,则先创建一个新的空文件并覆盖 >> ...
- gzip [选项] 压缩(解压缩)
减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间.gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用. 语法:gzip ...
- 使用ICSharpCode.SharpZipLib.Zip实现压缩与解压缩
使用开源类库ICSharpCode.SharpZipLib.Zip可以实现压缩与解压缩功能,源代码和DLL可以从http://www.icsharpcode.net/OpenSource/SharpZ ...
- PclZip:强大的PHP压缩与解压缩zip类
PclZip简介PclZip是一个很强大的压缩与解压缩zip文件的PHP类,PclZip library能够压缩与解压缩Zip格式的压缩档(WinZip.PKZIP):且能对此类类档案进行处理,包括产 ...
- zip格式压缩、解压缩(C#)
压缩方法 #region 压缩 /// <summary> /// 压缩 /// </summary> /// <param name="bytes" ...
- Tar打包、压缩与解压缩到指定目录的方法
tar在linux上是常用的打包.压缩.加压缩工具,他的参数很多,折里仅仅列举常用的压缩与解压缩参数 参数: -c :create 建立压缩档案的参数: -x : 解压缩压缩档案的参数: -z : 是 ...
随机推荐
- DropBox为什么一直那么红——靠用户体验,旗帜鲜明,它要保存的是你的重要随身资料,并且开放API
链接:http://www.zhihu.com/question/19705960/answer/71742127来源:知乎 看到这个问题竟然从11年答到现在,有趣的是这几年里国内云存储行业变化也是蛮 ...
- BZOJ 2463 谁能赢呢? (博弈论)
题解:简单博弈论 #include <cstdio> int main(){ int n; while(scanf("%d",&n),n!=0) if (n&a ...
- 查找jar包的站点
1.findJAR.com: http://www.findjar.com/index.x 2.jarfire: https://cn.jarfire.org/
- C#中文件管理的运用(Twelfth Day)
又到了总结的时间了,今天在云和学院学习了文件管理的一些运用及复习昨天学的里氏转换.今天我就总结下昨天遗留下的问题以及今天所学的知识. 昨天遗留的问题 里氏转换(父类转子类) 例:在这里定义父类Peop ...
- hadoop的集群安装
hadoop的集群安装 1.安装JDK,解压jar,配置环境变量 1.1.解压jar tar -zxvf jdk-7u79-linux-x64.tar.gz -C /opt/install //将jd ...
- mysql 添加用户并授权(记录)
mysql> GRANT ALL PRIVILEGES ON *.* TO monty@localhost IDENTIFIED BY 'something' WITH GRANT OPTION ...
- unity之uv贴图画圆弧,圆弧面,不规则图形
由于最近一直没有时间,所以这篇博客一直没发,下面我说说uv画圆弧,圆面,不规则面拼接. 先来两张效果图 图截的不咋滴,凑合着看吧,画圆弧主要用的贝塞尔曲线画的,我感觉这个比较简单,当然大家也可以使用圆 ...
- Python读取Excel数据并根据列名取值
一直想将自己接触到的东西梳理一遍,可就是迈不出第一步,希望从这篇总结开始不要再做行动的矮人了. 最近测试过程中需要用到python读取excel用例数据,于是去了解和学习了下xlrd库,这里只记录使用 ...
- 高质量程序设计指南C/C++语言——C++/C常量
- 第三章 视图和URL配置
在Mysite文件夹中,创建一个views.py的空文件,输入: from django.http import HttpResponse def hello(request): return Htt ...