java解压缩出现异常:Unexpected end of ZLIB input stream 本帖最后由 vaintwyt 于 2014-04-18 12:13:14 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你好,我根据下面网址使用Deflater压缩,Inflater解压。没有出现问题。不过,原本1046长度的字符串,压缩后变成1144长。而我用gzip的话,可以压缩到16。http://navylee.iteye.com/blog/1661733 隔了一段时间,再看看。终于解决了问题。原来是获得输出流的数据之前,需要将gzip关闭。另外,我上面说的压缩到16,是因为之前出现异常,所以才那么小。其实应该是8百多。结帖啦 public static String GetCompress(String src) { if (src == null || src.isEmpty()) { return src; } ByteArrayOutputStream out = new ByteArrayOutputStream(); GZIPOutputStream gzip = null; String des = null; try { gzip = new GZIPOutputStream(out); gzip.write(src.getBytes()); //由于压缩后的数据需要传输,所以用了BASE64编码 //des = new BASE64Encoder().encode(out.toByteArray()); //原先在这个获得压缩数据 } catch (IOException e) { e.printStackTrace(); }finally{ if(gzip!=null) { try { gzip.close(); } catch (IOException e) { e.printStackTrace(); } } } return new BASE64Encoder().encode(out.toByteArray());//最终改成这里获得压缩数据 } Java&&.Net extends和implements getResourceAsStream 问题大家来看看, 初学大家帮我看看错:jsp操作数据库 有没有求两个数相除的余数的函数? HyperlinkListener超链接怎么变成不是超链接? 紧急救命啊:jsp页面怎么传送一个字符串给applet啊,后天要答辩了啊 一个简单的java问题,求解,急。 突发奇想的一个问题!!!!!!!!!!!!!! 如何解决JTextPane中序列化的中文问题? 天生不笨请来取分 明天考scjp 又散分了
你好,我根据下面网址使用Deflater压缩,Inflater解压。没有出现问题。不过,原本1046长度的字符串,压缩后变成1144长。而我用gzip的话,可以压缩到16。http://navylee.iteye.com/blog/1661733
public static String GetCompress(String src)
{
if (src == null || src.isEmpty()) {
return src;
}
ByteArrayOutputStream out = new ByteArrayOutputStream();
GZIPOutputStream gzip = null;
String des = null;
try {
gzip = new GZIPOutputStream(out);
gzip.write(src.getBytes());
//由于压缩后的数据需要传输,所以用了BASE64编码
//des = new BASE64Encoder().encode(out.toByteArray()); //原先在这个获得压缩数据
} catch (IOException e) {
e.printStackTrace();
}finally{
if(gzip!=null)
{
try {
gzip.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return new BASE64Encoder().encode(out.toByteArray());//最终改成这里获得压缩数据
}