关注微信公众号 太平洋学习网 扫描二维码
最新消息:关注【太平洋学习网】微信公众号,可以获取全套资料,【全套Java基础27天】【JavaEE就业视频4个月】【Android就业视频4个月】

Java bzip2压缩与解压缩工具类

Java基础 太平洋学习网 浏览 评论

java bzip2压缩是一个比gzip压缩率更高的压缩形式,使用了BZip2CompressorOutputStream类来将json等数据压缩并输出,本案例是一个写好了的bzip2压缩与解压缩工具类,使用bzip2压缩要导入commons-compress相关的jar包,如下:

<dependency>
	<groupId>org.apache.commons</groupId>
	<artifactId>commons-compress</artifactId>
	<version>1.5</version>
</dependency>

新建一个Bzip2Utils.java工具类,在里面定义好bzip2压缩与解压缩的静态方法,如下:

package demo;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;

import org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream;
import org.apache.commons.compress.compressors.bzip2.BZip2CompressorOutputStream;

public class Bzip2Utils {

        //bzip2压缩方法
	public static byte[] bzipCompress(byte[] data) throws Exception {
		ByteArrayOutputStream out = new ByteArrayOutputStream();
		BZip2CompressorOutputStream bcos = new BZip2CompressorOutputStream(out);
		try {
			bcos.write(data);
		} finally {
			bcos.close();
			out.close();
		}
		return out.toByteArray();
	}

	//bzip2解压方法
	public static byte[] bzipUncompress(byte[] data) throws Exception {
		ByteArrayOutputStream out = new ByteArrayOutputStream();
		ByteArrayInputStream in = new ByteArrayInputStream(data);
		BZip2CompressorInputStream ungzip = new BZip2CompressorInputStream(in);

		try {
			byte[] buffer = new byte[1024];
			int n;
			while ((n = ungzip.read(buffer)) >= 0) {
				out.write(buffer, 0, n);
			}
		} finally {
			ungzip.close();
			in.close();
			out.close();
		}
		return out.toByteArray();
	}
}

在main方法中测试bzip2压缩与bzip2解压缩数据,如下:

public static void main(String[] args) throws Exception {
	String queryString = "{ firstName:Bill测试 , lastName:Gates }{ firstName:Bill , lastName:Gates }";
	for (int i = 0; i < 10; i++) {
		queryString = queryString + queryString;
	}
	System.out.println("压缩前长度:"+queryString.length());
	byte[] zip = Bzip2Utils.bzipCompress(queryString.getBytes());
	System.out.println("压缩后长度:"+zip.length);
	
	//byte[] bys = Bzip2Utils.bzipUncompress(zip);
	//System.out.println(new String(bys,"UTF-8"));

}

输出结果如下,gzip压缩率很高,比gzip更好:

压缩前长度:73728
压缩后长度:147


来源网站:太平洋学习网,转载请注明出处:http://www.tpyyes.com/a/java/2018/0104/463.html

    与本文相关的文章