最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
java中GZIP压缩解压类使用实例
时间:2022-06-29 01:26:55 编辑:袖梨 来源:一聚教程网
java中GZIP压缩解压类使用实例
当我们客户端与服务端进行数据传输时需要走流量,为了节省流量我们常常需要写一个压缩类对数据进行压缩。
实例代码:
代码如下 | 复制代码 |
importjava.io.ByteArrayInputStream; importjava.io.ByteArrayOutputStream; importjava.io.IOException; importjava.util.zip.GZIPInputStream; importjava.util.zip.GZIPOutputStream;
/** * GZIP压缩解压类 */ publicclassMessageGZIP {
privatestaticString encode ="utf-8";//"ISO-8859-1"
publicString getEncode() { returnencode; }
/* * 设置 编码,默认编码: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(); }
/* * 字节数组解压缩后返回字符串 */ publicstaticString uncompressToString(byte[] b, String encoding) { if(b ==null|| b.length ==0) { returnnull; } ByteArrayOutputStream out =newByteArrayOutputStream(); ByteArrayInputStream in =newByteArrayInputStream(b);
try{ GZIPInputStream gunzip =newGZIPInputStream(in); byte[] buffer =newbyte[256]; intn; while((n = gunzip.read(buffer)) >=0) { out.write(buffer,0, n); } returnout.toString(encoding); }catch(IOException e) { e.printStackTrace(); } returnnull; } } |
相关文章
- 《燕云十六声》红尘无眼完成图文攻略 12-25
- 《燕云十六声》阴阳如影完成图文攻略 12-25
- 《燕云十六声》悬檐之下四架椽屋图文攻略 12-25
- 《燕云十六声》2024最新公测时间介绍 12-25
- 《燕云十六声》有没有藏宝阁 12-25
- 《燕云十六声》制作公司介绍 12-25