首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

用Deflater与Inflater兑现字节的压缩与解压

2012-09-03 
用Deflater与Inflater实现字节的压缩与解压package com.yangxiutianimport java.io.ByteArrayOutputStrea

用Deflater与Inflater实现字节的压缩与解压

package com.yangxiutian;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.util.zip.DataFormatException;import java.util.zip.Deflater;import java.util.zip.Inflater;public class ZLibUtils {/** * 用zip算法解压压缩字节 * @param zipByte 输入的压缩字节 * @return解压好的解压字节 * @throws IOException */public static byte[] decompress(byte[] zipByte) throws IOException {ByteArrayOutputStream aos=new ByteArrayOutputStream(); Inflater inflater=new Inflater();inflater.setInput(zipByte); byte[] buff=new byte[1024];int byteNum=0;while(!inflater.finished()){try {byteNum=inflater.inflate(buff);aos.write(buff,0,byteNum);} catch (DataFormatException e) {e.printStackTrace();}}return aos.toByteArray();}/** * 用zip算法压缩字节 * @param bytes 输入的待压缩字节 * @return压缩就绪的字节 * @throws IOException */public static byte[] compress(byte[] bytes) throws IOException {ByteArrayOutputStream aos=new ByteArrayOutputStream(); Deflater inflater=new Deflater();inflater.setInput(bytes);inflater.finish();byte[] buff=new byte[1024];int byteNum=0;while(!inflater.finished()){byteNum=inflater.deflate(buff);aos.write(buff, 0, byteNum);}return aos.toByteArray();}}

有时在内存中需要对某些数据块实现压缩与解压,ZipInputStream / ZipOutputStream的操作对象是文件,这时就需要用到Deflater / Inflater。实现代码如下:

热点排行