//GZIP压缩于解压缩
压缩:new String(compressByGZIP("中文字符串", CharEncoding.UTF_8), CharEncoding.ISO_8859_1)
解压:new String(uncompressByGZIP("被压缩字符串".getBytes(CharEncoding.ISO_8859_1)))
//GZIP压缩+base64加密解密
压缩:new String(Base64.encode(compressByGZIP("中文字符串", CharEncoding.UTF_8), false), CharEncoding.ISO_8859_1)
解压:new String(uncompressByGZIP(Base64.decode(new String("被压缩字符串".getBytes(), CharEncoding.ISO_8859_1))))
/**
* 字符串压缩为GZIP字节数组
*
* @param str
* @param encoding
* @return
*/
public byte[] compressByGZIP(String str, String encoding) {
if (str == null || str.length() == 0) {
return null;
}
ByteArrayOutputStream out = new ByteArrayOutputStream();
GZIPOutputStream gzip;
try {
gzip = new GZIPOutputStream(out);
gzip.write(str.getBytes(encoding));
gzip.close();
} catch (IOException e) {
e.printStackTrace();
}
return out.toByteArray();
}
/**
* GZIP解压缩
*
* @param bytes
* @return
*/
public byte[] uncompressByGZIP(byte[] bytes) {
if (bytes == null || bytes.length == 0) {
return null;
}
ByteArrayOutputStream out = new ByteArrayOutputStream();
ByteArrayInputStream in = new ByteArrayInputStream(bytes);
try {
GZIPInputStream ungzip = new GZIPInputStream(in);
byte[] buffer = new byte[256];
int n;
while ((n = ungzip.read(buffer)) >= 0) {
out.write(buffer, 0, n);
}
} catch (IOException e) {
e.printStackTrace();
}
return out.toByteArray();
}
//Deflater压缩
压缩:new String(compress("中文字符串".getBytes()), CharEncoding.ISO_8859_1)
//Deflater压缩+base64加密
new String(Base64.encode(compress("中文字符串".getBytes()), false), CharEncoding.ISO_8859_1)
//Inflater解压
解压:new String(uncompress("被压缩字符串".getBytes(CharEncoding.ISO_8859_1)))
//base64解密+Inflater解压
new String(uncompress(Base64.decode(new String("被压缩字符串".getBytes(), CharEncoding.ISO_8859_1))))
/**
* 字符串压缩为Deflater字节数组
*
* @return byte[]
*/
public byte[] compress(byte input[]) {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
Deflater compressor = new Deflater(1);
try {
compressor.setInput(input);
compressor.finish();
final byte[] buf = new byte[2048];
while (!compressor.finished()) {
int count = compressor.deflate(buf);
bos.write(buf, 0, count);
}
} finally {
compressor.end();
}
return bos.toByteArray();
}
/**
* 解析被压缩字节数组
*
* @return byte[]
*/
public byte[] uncompress(byte[] input) throws DataFormatException {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
Inflater decompressor = new Inflater();
try {
decompressor.setInput(input);
final byte[] buf = new byte[2048];
while (!decompressor.finished()) {
int count = decompressor.inflate(buf);
bos.write(buf, 0, count);
}
} finally {
decompressor.end();
}
return bos.toByteArray();
}
自用备查