原文: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的压缩与解压缩的更多相关文章

  1. 利用JAVA API函数实现数据的压缩与解压缩

      综述 许多信息资料都或多或少的包含一些多余的数据.通常会导致在客户端与服务器之间,应用程序与计算机之间极大的数据传输量.最常见的解决数据存储和信息传送的方法是安装额外的存储设备和扩展现有的通讯能力 ...

  2. Java 基础【12】 压缩与解压缩

    Java.util.zip 提供用于读写标准 ZIP 和 GZIP 文件格式的类. 还包括使用 DEFLATE 压缩算法(用于 ZIP 和 GZIP 文件格式)对数据进行压缩和解压缩的类. 依赖 Jd ...

  3. 菜鸟学Linux命令:tar命令 压缩与解压缩

    tar命令可以为linux的文件和目录创建档案.利用tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件. tar最初被用来在磁带上创建档案,现在,用户可以 ...

  4. Linux系统之压缩、解压缩,vi编辑器,系统初始化服务和系统监控

    一.正文处理,压缩与解压缩 1.内容重定向>与>> >:覆盖,将>号左边的结果覆盖到>号右边的文件中,如果文件不存在,则先创建一个新的空文件并覆盖 >> ...

  5. gzip [选项] 压缩(解压缩)

    减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间.gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用. 语法:gzip ...

  6. 使用ICSharpCode.SharpZipLib.Zip实现压缩与解压缩

    使用开源类库ICSharpCode.SharpZipLib.Zip可以实现压缩与解压缩功能,源代码和DLL可以从http://www.icsharpcode.net/OpenSource/SharpZ ...

  7. PclZip:强大的PHP压缩与解压缩zip类

    PclZip简介PclZip是一个很强大的压缩与解压缩zip文件的PHP类,PclZip library能够压缩与解压缩Zip格式的压缩档(WinZip.PKZIP):且能对此类类档案进行处理,包括产 ...

  8. zip格式压缩、解压缩(C#)

    压缩方法 #region 压缩 /// <summary> /// 压缩 /// </summary> /// <param name="bytes" ...

  9. Tar打包、压缩与解压缩到指定目录的方法

    tar在linux上是常用的打包.压缩.加压缩工具,他的参数很多,折里仅仅列举常用的压缩与解压缩参数 参数: -c :create 建立压缩档案的参数: -x : 解压缩压缩档案的参数: -z : 是 ...

随机推荐

  1. 【转】C++ stringstream介绍,使用方法与例子

    原文来自:http://www.cnblogs.com/lancidie/archive/2010/12/03/1895161.html C++引入了ostringstream.istringstre ...

  2. HDU 1091 A+B for Input-Output Practice (III)

    #include <cstdio> int main() { int a,b; while(scanf("%d%d",&a,&b)!=EOF) if ( ...

  3. GLSL中的各种变量总结

    1.uint CreateShader(enum type) : 创建空的shader object; type: VERTEX_SHADER, 2.void ShaderSource(uint sh ...

  4. JQuery的JSTree使用

    这是一个树形菜单的展示.其功能及其强大,几乎可以提供你对树结构的各种要求.下面,对其简述.    首先,感谢 Ivan Bozhanov利用JQuery对该组件的开发.同时还要感谢我的技术总监Mr. ...

  5. Web开发者的10个最好的云开发环境

    1. Cloud9 IDE cloud9 Cloud9是我最喜欢的一个最好的云开发环境,它可以让我在任何时间任何地点进行代码编写.运行和调试.Cloud9对Node.js 和 JavaScript代码 ...

  6. 【监控】使用probe对tomcat服务进行监控

    1.运行环境(博主本地) JDK:jdk1.6 Tomcat:tomcat7 OS:Windows10 2.下载 点击下载 3.安装运行 1.解压,将probe文件夹复制放进tomcat里面的weba ...

  7. centos7/redhat7 将网卡名字改成eth样式的方法

    方法/步骤    1. 编辑 /etc/sysconfig/grub 找到“GRUB_CMDLINE_LINUX”这一行 

  8. Unqualified name lookup

    Unqualified name lookup File scope Namespace scope For an qualified name, that is a name that does n ...

  9. Usaco 2.3 Zero Sums(回溯DFS)--暴搜

    Zero SumConsider the sequence of digits from 1 through N (where N=9) in increasing order: 1 2 3 ... ...

  10. 分布式session

    前端用户请求经过随机分发之后,可能会命中后端任意的Web Server,并且 Web Server 也可能会因为各种不确定的原因宕机.在这种情况下,session 是很难在集群间同步的,而通过将ses ...