注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

隐龙 为了一生的信念

今日默默沉于水,他日飞腾在九天...

 
 
 

日志

 
 

Android字符串的压缩和解压缩  

2011-10-13 18:19:19|  分类: Android |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

最近在做android开发,socket要传报文信息,报文信息是有json格式,数据的重复度很高所以就找了一个压缩字符串的方法,数据越大压缩越明显。

数据传输时,有时需要将数据压缩和解压缩,本例使用GZIPOutputStream/GZIPInputStream实现。

1、使用ISO-8859-1作为中介编码,可以保证准确还原数据
2、字符编码确定时,可以在uncompress方法最后一句中显式指定编码

  1. import java.io.ByteArrayInputStream;   
  2. import java.io.ByteArrayOutputStream;   
  3. import java.io.IOException;   
  4. import java.util.zip.GZIPInputStream;   
  5. import java.util.zip.GZIPOutputStream;   
  6.   
  7. public class ZipUtil {   
  8.     // 压缩   
  9.       public static String compress(String str) throws IOException {   
  10.         if (str == null || str.length() == 0) {   
  11.           return str;   
  12.         }   
  13.         ByteArrayOutputStream out = new ByteArrayOutputStream();   
  14.         GZIPOutputStream gzip = new GZIPOutputStream(out);   
  15.         gzip.write(str.getBytes());   
  16.         gzip.close();   
  17.         return out.toString("ISO-8859-1");   
  18.       }   
  19.   
  20.       // 解压缩   
  21.       public static String uncompress(String str) throws IOException {   
  22.         if (str == null || str.length() == 0) {   
  23.           return str;   
  24.         }   
  25.         ByteArrayOutputStream out = new ByteArrayOutputStream();   
  26.         ByteArrayInputStream in = new ByteArrayInputStream(str   
  27.             .getBytes("ISO-8859-1"));   
  28.         GZIPInputStream gunzip = new GZIPInputStream(in);   
  29.         byte[] buffer = new byte[256];   
  30.         int n;   
  31.         while ((n = gunzip.read(buffer)) >= 0) {   
  32.           out.write(buffer, 0, n);   
  33.         }   
  34.         // toString()使用平台默认编码,也可以显式的指定如toString("GBK")   
  35.         return out.toString();   
  36.       }   
  37.   
  38.       // 测试方法   
  39.       public static void main(String[] args) throws IOException {   
  40.         String temp = "l;jsafljsdoeiuoksjdfpwrp3oiruewoifrjewflk我的得到喀喀喀 看看看safljsdoeiuoksjdfpwrp3oiruewoifrjewflk我的得到喀喀喀 看看看看safljsdoeiuoksjdfpwrp3oiruewoifrjewflk我的得到喀喀喀 看看看看safljsdoeiuoksjdfpwrp3oiruewoifrjewflk我的得到喀喀喀 看看看看safljsdoeiuoksjdfpwrp3oiruewoifrjewflk我的得到喀喀喀 看看看看safljsdoeiuoksjdfpwrp3oiruewoifrjewflk我的得到喀喀喀 看看看看safljsdoeiuoksjdfpwrp3oiruewoifrjewflk我的得到喀喀喀 看看看看safljsdoeiuoksjdfpwrp3oiruewoifrjewflk我的得到喀喀喀 看看看看safljsdoeiuoksjdfpwrp3oiruewoifrjewflk我的得到喀喀喀 看看看看safljsdoeiuoksjdfpwrp3oiruewoifrjewflk我的得到喀喀喀 看看看看safljsdoeiuoksjdfpwrp3oiruewoifrjewflk我的得到喀喀喀 看看看看safljsdoeiuoksjdfpwrp3oiruewoifrjewflk我的得到喀喀喀 看看看看safljsdoeiuoksjdfpwrp3oiruewoifrjewflk我的得到喀喀喀 看看看看看看看看  ";   
  41.         System.out.println("原字符串="+temp);   
  42.         System.out.println("原长="+temp.length());   
  43.         String temp1 = ZipUtil.compress(temp);   
  44.         System.out.println("压缩后的字符串="+temp1);   
  45.         System.out.println("压缩后的长="+temp1.length());   
  46.         System.out.println("解压后的字符串="+ZipUtil.uncompress(temp1));   
  47.       }   
  48.   
  49. }  
  评论这张
 
阅读(3519)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018