package com.zy.nc.util; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.zip.*; /** * ѹ�������� * * @author liyang */ public class CompressUtil { private static int buffSize = 1024; /** * deflaterCompress Ĭ��ѹ�� * * @param source ԭ�� * @return * @throws IOException * @throws Exception */ public static String deflaterCompress(String source) throws Exception { String value = null; ByteArrayOutputStream bos = new ByteArrayOutputStream(); Deflater compressor = new Deflater(); try { byte[] input = source.getBytes(StandardCharsets.UTF_8); // ����ѹ���Ǽ� compressor.setLevel(Deflater.DEFAULT_COMPRESSION); compressor.setInput(input); compressor.finish(); final byte[] buf = new byte[buffSize]; while (!compressor.finished()) { int count = compressor.deflate(buf); bos.write(buf, 0, count); } value = Base64Util.encryptBASE64(bos.toByteArray()); } finally { bos.close(); compressor.end(); } return value; } /** * deflaterDecompress Ĭ�Ͻ�ѹ * * @param source ѹ�����ı� * @return * @throws IOException * @throws @throws Exception */ public static String deflaterDecompress(String source) throws Exception { String value = null; ByteArrayOutputStream bos = new ByteArrayOutputStream(); Inflater decompressor = new Inflater(); try { byte[] input = Base64Util.decryptBASE64(source); decompressor.setInput(input); final byte[] buf = new byte[buffSize]; while (!decompressor.finished()) { int count = decompressor.inflate(buf); bos.write(buf, 0, count); } value = new String(bos.toByteArray(), StandardCharsets.UTF_8); } catch (IOException | DataFormatException e) { throw new Exception("��ѹ�쳣 " + e.getMessage()); } finally { bos.close(); decompressor.end(); } return value; } /** * gzipCompress ����gzipѹ�� * * @param source ԭ�� * @return * @throws IOException * @throws Exception */ public static String gzipCompress(String source) throws Exception { String value = null; ByteArrayOutputStream out = null; try { out = new ByteArrayOutputStream(); GZIPOutputStream gzip = new GZIPOutputStream(out); byte[] input = source.getBytes(StandardCharsets.UTF_8); gzip.write(input); gzip.close(); value = Base64Util.encryptBASE64(out.toByteArray()); } catch (IOException e) { throw new Exception("ѹ���쳣 " + e.getMessage()); } finally { if (out != null) { out.close(); } } return value; } /** * gzipDecompress gzip��ѹ * * @param source ѹ�����ı� * @return * @throws Exception */ public static String gzipDecompress(String source) throws Exception { String value = null; ByteArrayOutputStream out = null; ByteArrayInputStream in = null; try { byte[] input = Base64Util.decryptBASE64(source); out = new ByteArrayOutputStream(); in = new ByteArrayInputStream(input); GZIPInputStream ungzip = new GZIPInputStream(in); byte[] buffer = new byte[buffSize]; int n; while ((n = ungzip.read(buffer)) >= 0) { out.write(buffer, 0, n); } ungzip.close(); value = new String(out.toByteArray(), StandardCharsets.UTF_8); } catch (IOException e) { throw new Exception("ѹ���쳣 " + e.getMessage()); } finally { if (in != null) { in.close(); } if (out != null) { out.close(); } } return value; } }