日期:2014-05-18  浏览次数:20987 次

字符串压缩问题
从网上找了个压缩字符串的方法,但怎么压缩了之后反而比原来字符串还要大呢,代码如下:
public static String gzip(String primStr) {
if (primStr == null || primStr.length() == 0) {
return primStr;
}

ByteArrayOutputStream out = new ByteArrayOutputStream();

GZIPOutputStream gzip=null;
try {
gzip = new GZIPOutputStream(out);
gzip.write(primStr.getBytes());
} catch (IOException e) {
e.printStackTrace();
}finally{
if(gzip!=null){
try {
gzip.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}


return new sun.misc.BASE64Encoder().encode(out.toByteArray());
}

public static void main(String[] args) {
// TODO Auto-generated method stub
String t = "sdfl*^#*%)}{OFAESKJ";

System.out.println("源长度:" + t.length());
String t3 = ZipUtils.gzip(t);
System.out.println("压缩后字符串:" + t3);
System.out.println("压缩后长度:" + t3.length());
}

输出结果如下:

源长度:19
压缩后字符串:H4sIAAAAAAAAACtOScvRilPWUtWsrfZ3c3QN9vYCAK2/maUTAAAA
压缩后长度:52
------解决方案--------------------
应该是你压得东西太小吧,你找个大的压压试试
人和车赛跑没有悬念,但你要规定只跑一米,那车完败的,还没发动人就到了