首页 > 开发 > Java > 正文

java中GZIP压缩解压类使用实例

2024-07-13 10:05:38
字体:
来源:转载
供稿:网友

java/144554.html">java中GZIP压缩解压类使用实例

   当我们客户端与服务端进行数据传输时需要走流量,为了节省流量我们常常需要写一个压缩类对数据进行压缩。

实例代码:

import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream;  /**  * GZIP压缩解压类  */ public class MessageGZIP {      private static String encode = "utf-8";//"ISO-8859-1"      public String getEncode() {     return encode;   }    /*    * 设置 编码,默认编码:UTF-8    */   public void setEncode(String encode) {     MessageGZIP.encode = encode;   }    /*    * 字符串压缩为字节数组    */   public static byte[] compressToByte(String str){     if (str == null || str.length() == 0) {       return null;     }     ByteArrayOutputStream out = new ByteArrayOutputStream();     GZIPOutputStream gzip;     try {       gzip = new GZIPOutputStream(out);       gzip.write(str.getBytes(encode));       gzip.close();     } catch (IOException e) {       e.printStackTrace();     }     return out.toByteArray();   }    /*    * 字符串压缩为字节数组    */   public static byte[] compressToByte(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();   }    /*    * 字节数组解压缩后返回字符串    */   public static String uncompressToString(byte[] b) {     if (b == null || b.length == 0) {       return null;     }     ByteArrayOutputStream out = new ByteArrayOutputStream();     ByteArrayInputStream in = new ByteArrayInputStream(b);      try {       GZIPInputStream gunzip = new GZIPInputStream(in);       byte[] buffer = new byte[256];       int n;       while ((n = gunzip.read(buffer)) >= 0) {         out.write(buffer, 0, n);       }     } catch (IOException e) {       e.printStackTrace();     }     return out.toString();   }    /*    * 字节数组解压缩后返回字符串    */   public static String uncompressToString(byte[] b, String encoding) {     if (b == null || b.length == 0) {       return null;     }     ByteArrayOutputStream out = new ByteArrayOutputStream();     ByteArrayInputStream in = new ByteArrayInputStream(b);      try {       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.toString(encoding);     } catch (IOException e) {       e.printStackTrace();     }     return null;   } } 

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表