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 : 是 ...
随机推荐
- 帝国cms后台 不同栏目发布字段不同
在同一数据表下的两个栏目,由于功能不同,也需要建立不同的字段,问题是建立完不同字段后,其数据表下的两个栏目都有发布字段.这里教大家,不同栏目下发布内容,不同字段.修改数据模型中 录入表单模板 代码.底 ...
- android 同时发送几条通知
android 同时发送几条通知 ======= 下面是转载的文章. 同时发送几条通知把ID添加,接收的时候找到这个id就可以出来多条了. 还是不太明白或者编码实现不了的可以加我QQ. 博客很少上 ...
- 关于GROUP BY的应用
前面收藏了别人的SQL语句操作,可是没有实战,也未知学的如何 正好今天有个事需要做一下 (sql server 2000) 三个表:stuInf,sType,sinInf分别为学生信息表,类型表,信息 ...
- USB设备在连接PC时的reset从何而来?
近期在做烧写工具的优化工作,有一些关于USB的内容须要总结一下当中包含设备的初始化过程和枚举过程. 在枚举的过程中,设备会一直等PC端的状态,当等到reset命令时会对设备进行又一次枚举.可是这个re ...
- Memory Architecture-SGA-Database Buffer Cache
启动instance:1.分配内存空间SGA 2.启动后台进程 内存结构:1.SGA 2.PGA 3.UGA 4.Software code areas SGA components:1.Databa ...
- CRC32 vs Java.HashCode
找了容量为27万中文词库进行试验 CRC32 中冲突率 < 0.01% 而 Java.HashCode 有 4% hashCode 的速度 应该比 CRC 快 2-3 倍 CR ...
- 去掉word2007回车后自动编号
1. 在使用word自动编号时,回车续写上一编号内容可能会行距很宽,这时候使用shift+回车不会自动下一编号,而且是正常行距 取消回车自动编号: 打开Word文档,单击菜单栏上的[格式]→[自动套用 ...
- Week 5a - Mouse input and more lists----learning notes
pyton 程序内容的颠倒,运用 [](列表) def reverse_string(s): """Returns the reversal of the given s ...
- JavaSE学习总结第22天_IO流4
- 22.01 数据输入输出流的概述和讲解 操作基本数据类型 public class DataInputStreamextends FilterInputStream implements Da ...
- C++创建对象的三种方式
C++在创建对象的时候,有三种方式: #include <iostream> using namespace std; class A { private: int n; public: ...