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);
	}
}
时间: 2024-10-10 11:57:56

Deflater与Inflater的压缩与解压缩的相关文章

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

综述 许多信息资料都或多或少的包含一些多余的数据.通常会导致在客户端与服务器之间,应用程序与计算机之间极大的数据传输量.最常见的解决数据存储和信息传送的方法是安装额外的存储设备和扩展现有的通讯能力.这样做是可以的,但无疑会增加组织的运作成本.一种有效的解决数据存储与信息传输的方法是通过更有效率的代码来存储数据.这篇文章简要的介绍了数据的压缩与解压缩,并展示了用java.util.zip包来实现数据的压缩与解压缩是多么的方便与高效. 当然用诸如WinZip,gzip,和Java压缩(或jar)之类

Linux系统压缩及解压缩

==============================================================================  Linux系统解压缩 ============================================================================== 概述: 本篇将介绍Linux系统中的压缩和解压缩的工具,以及归档工具(tar,cpio) compress/uncompress:对应 .Z 结尾的压缩格式文件

Jcompress: 一款基于huffman编码和最小堆的压缩、解压缩小程序

前言 最近基于huffman编码和最小堆排序算法实现了一个压缩.解压缩的小程序.其源代码已经上传到github上面: Jcompress下载地址 .在本人的github上面有一个叫Utility的repository,该分类下面有一个名为Jcompress的目录便是本文所述的压缩.解压缩小程序的源代码.后续会在Utility下面增加其他一些实用的小程序,比如基于socket的文件断点下载小程序等等.如果你读了此文觉得还不错,不防给笔者的github点个star, 哈哈.在正式介绍Jcompres

Linux学习笔记<十三>——文件压缩、解压缩和归档

压缩.解压缩命令: 1.compress/uncompress:压缩格式为Z,文件后缀为.Z compress /path/to/file uncompress /path/to/file.Z 2.gzip/gunzip/zcat:压缩格式为gz,文件后缀为.gz gzip [OPTION] /path/to/file:,压缩文件保存在被压缩文件的目录,压缩完成后会删除原文件 -v|verbose:显示指令执行过程 -d:解压缩,解压缩完成后删除原压缩文件 -#:1-9,指定压缩比,默认为6,数

《转》python的zipfile压缩、解压缩

网上搜索了很多关于python的zipfile压缩.解压缩.觉得讲述比较详细,例子也很明了.由于比较懒,就直接复制了. 以下内容大部分转于 http://blog.csdn.net/jgood/article/details/4351911 zip文件格式是通用的文档压缩标准,在ziplib模块中,使用ZipFile类来操作zip文件,下面具体介绍一下: class zipfile.ZipFile(file[, mode[, compression[, allowZip64]]]) 创建一个Zi

Huffman的应用之文件压缩与解压缩

文件压缩与解压缩> 最近这段时间一直在学习树的这种数据结构,也接触到了Huffman树以及了解了什仫是Huffman编码,而我们常用的zip压缩也是利用的Huffman编码的特性,那仫是不是可以自己实现一个文件压缩呢?当然可以了.在文件压缩中我实现了Huffman树和建堆Heap的代码,zip压缩的介绍> http://www.cricode.com/3481.html 下面开始介绍自己实现的文件压缩的思路和问题... 1).统计>读取一个文件统计这个文件中字符出现的次数. 2).建树&

linux压缩、解压缩及归档工具

压缩.解压缩及归档工具 compress/uncompress: .Z    gzip/gunzip: .gz    bzip2/bunzip2: .bz2    xz/unxz: .xz    zip/unzip    tar, cpio 1.gzip/gunzip gzip [OPTION]... FILE ...            -d: 解压缩,相当于gunzip            -c: 将结果输出至标准输出:            -#:1-9,指定压缩比: zcat:不显式

tar的打包-压缩与解压缩,并解压到指定的目录

tar在linux上是常用的打包.压缩.加压缩工具,他的参数很多,折里仅仅列举常用的压缩与解压缩参数 参数: -c :create 建立压缩档案的参数:-x : 解压缩压缩档案的参数:-z : 是否需用用gzip压缩:-v: 压缩的过程中显示档案:-f: 置顶文档名,在f后面立即接文件名,不能再加参数 举例: 一,将整个/home/www/images 目录下的文件全部打包为 /home/www/images.tar[[email protected] ~]# tar -cvf /home/ww

linux笔记 文件的压缩与解压缩gzip、bzip2、xz、zip&unzip、tar打包、tar打包和压缩并用

压缩文件意义节省网络传输带宽,降低磁盘使用率.但会使用一定的cpu. 1.gzip 不支持压缩目录,gzip后直接跟文件名,在当前目录下压缩时,原文件会消失. #gzip filename 指定压缩目录:#gzip -c 123.txt > /tmp/123.txt.gz 将当前目录下123.txt文件压缩到tmp目录下名字为123.txt.gz 解压缩:#gzip -d file.gz #zcat file.gz  查看.gz文件内容 2.bzip2 不支持压缩目录,bzip2后可直接跟文件名