2015年06月06日 Byte Array 浏览(312) 收藏

Java通过Byte数组对字符串进行压缩与解压的过程

Java通过Byte数组对字符串进行压缩与解压的过程代码如下:

import java.io.ByteArrayOutputStream;
import java.util.Arrays;
import java.util.zip.Deflater;
import java.util.zip.Inflater;
/**
 * @from www.everycoding.com
 * @Description:Java通过Byte数组对字符串进行压缩与解压的过程
 */
public class CompressByteTester {
	public static void main(String[] argv) throws Exception {
	    byte[] input = "www.everycoding.com".getBytes();

	    Deflater compressor = new Deflater();
	    compressor.setLevel(Deflater.BEST_COMPRESSION);
	    compressor.setInput(input);
	    compressor.finish();

	    ByteArrayOutputStream bos = new ByteArrayOutputStream(input.length);

	    byte[] buf = new byte[1024];
	    while (!compressor.finished()) {
	      int count = compressor.deflate(buf);
	      bos.write(buf, 0, count);
	    }
	    bos.close();
	    byte[] compressedData = bos.toByteArray();
	    System.out.println("压缩后的byte结果:"+Arrays.toString(compressedData));
	    // 对压缩数据进行解压
	    decompressor(compressedData);
	  }
	
	/**
	 * 对压缩数据进行解压
	 * @param compressedData
	 * @throws Exception
	 */
	public static void decompressor(byte[] compressedData) throws Exception {
		Inflater decompressor = new Inflater();
		decompressor.setInput(compressedData);
		ByteArrayOutputStream bos = new ByteArrayOutputStream(compressedData.length);
		byte[] buf = new byte[1024];
		while (!decompressor.finished()) {
			int count = decompressor.inflate(buf);
			bos.write(buf, 0, count);

		}
		bos.close();
		byte[] decompressedData = bos.toByteArray();
		System.out.println("解压后的byte结果:" + Arrays.toString(decompressedData));
		System.out.println("解压出字符串:" + bos.toString());
	}
}

执行结果如下:

压缩后的byte结果:[120, -38, 43, 47, 47, -41, 75, 45, 75, 45, -86, 76, -50, 79, -55, -52, 75, -41, 75, -50, -49, 5, 0, 77, -97, 7, -96]
解压后的byte结果:[119, 119, 119, 46, 101, 118, 101, 114, 121, 99, 111, 100, 105, 110, 103, 46, 99, 111, 109]
解压出字符串:www.everycoding.com


赞一下 0 人赞了本文