java中GZIP压缩解压类使用实例
java中GZIP压缩解压类使用实例
当我们客户端与服务端进行数据传输时需要走流量,为了节省流量我们常常需要写一个压缩类对数据进行压缩。
实例代码:
importjava.io.ByteArrayInputStream;
importjava.io.ByteArrayOutputStream;
importjava.io.IOException;
importjava.util.zip.GZIPInputStream;
importjava.util.zip.GZIPOutputStream;
/**
*GZIP压缩解压类
*/
publicclassMessageGZIP{
privatestaticStringencode="utf-8";//"ISO-8859-1"
publicStringgetEncode(){
returnencode;
}
/*
*设置编码,默认编码:UTF-8
*/
publicvoidsetEncode(Stringencode){
MessageGZIP.encode=encode;
}
/*
*字符串压缩为字节数组
*/
publicstaticbyte[]compressToByte(Stringstr){
if(str==null||str.length()==0){
returnnull;
}
ByteArrayOutputStreamout=newByteArrayOutputStream();
GZIPOutputStreamgzip;
try{
gzip=newGZIPOutputStream(out);
gzip.write(str.getBytes(encode));
gzip.close();
}catch(IOExceptione){
e.printStackTrace();
}
returnout.toByteArray();
}
/*
*字符串压缩为字节数组
*/
publicstaticbyte[]compressToByte(Stringstr,Stringencoding){
if(str==null||str.length()==0){
returnnull;
}
ByteArrayOutputStreamout=newByteArrayOutputStream();
GZIPOutputStreamgzip;
try{
gzip=newGZIPOutputStream(out);
gzip.write(str.getBytes(encoding));
gzip.close();
}catch(IOExceptione){
e.printStackTrace();
}
returnout.toByteArray();
}
/*
*字节数组解压缩后返回字符串
*/
publicstaticStringuncompressToString(byte[]b){
if(b==null||b.length==0){
returnnull;
}
ByteArrayOutputStreamout=newByteArrayOutputStream();
ByteArrayInputStreamin=newByteArrayInputStream(b);
try{
GZIPInputStreamgunzip=newGZIPInputStream(in);
byte[]buffer=newbyte[256];
intn;
while((n=gunzip.read(buffer))>=0){
out.write(buffer,0,n);
}
}catch(IOExceptione){
e.printStackTrace();
}
returnout.toString();
}
/*
*字节数组解压缩后返回字符串
*/
publicstaticStringuncompressToString(byte[]b,Stringencoding){
if(b==null||b.length==0){
returnnull;
}
ByteArrayOutputStreamout=newByteArrayOutputStream();
ByteArrayInputStreamin=newByteArrayInputStream(b);
try{
GZIPInputStreamgunzip=newGZIPInputStream(in);
byte[]buffer=newbyte[256];
intn;
while((n=gunzip.read(buffer))>=0){
out.write(buffer,0,n);
}
returnout.toString(encoding);
}catch(IOExceptione){
e.printStackTrace();
}
returnnull;
}
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!