package com.doumee.core.utils;
|
|
import java.io.ByteArrayInputStream;
|
import java.io.IOException;
|
import java.util.zip.GZIPInputStream;
|
import java.util.zip.GZIPOutputStream;
|
|
import org.apache.commons.io.output.ByteArrayOutputStream;
|
|
public class CompressUtil {
|
/**
|
* 对字节数组进行gzip压缩
|
* <p>
|
*
|
* @author jgzhang2, 2014-8-13
|
*
|
* :压缩前的字节数组
|
* @return:压缩后的字节数组
|
*/
|
public static byte[] compressByGzip(byte[] str) {
|
if (str == null || str.length == 0) {
|
return null;
|
}
|
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
GZIPOutputStream gzip;
|
try {
|
gzip = new GZIPOutputStream(out);
|
gzip.write(str);
|
gzip.close();
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
return out.toByteArray();
|
}
|
|
/**
|
* <p>
|
*
|
* @author jgzhang2, 2014-8-16
|
*
|
* @param bytesToUncompress
|
* @param encoding
|
* @return
|
* @throws IOException
|
*/
|
public static byte[] uncompressByGzip(byte[] bytesToUncompress,
|
String encoding) throws IOException {
|
if (bytesToUncompress == null || bytesToUncompress.length == 0) {
|
return null;
|
}
|
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
ByteArrayInputStream in = new ByteArrayInputStream(bytesToUncompress);
|
|
GZIPInputStream gunzip = new GZIPInputStream(in);
|
byte[] buffer = new byte[256];
|
int n;
|
while ((n = gunzip.read(buffer)) >= 0) {
|
out.write(buffer, 0, n);
|
}
|
|
return out.toByteArray();
|
|
}
|
}
|