毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> 开发语言 >> 正文

解压Unexpected end of ZLIB input stream

更新时间:2016-3-22:  来源:毕业论文

通过java原生API将字符串进行压缩和解压缩,参考使用了别人的代码后,报异常了(Unexpected end of ZLIB input stream)。

    在解压缩函数的gunzip.read(buffer)出了问题,跟踪进去看,异常由InflaterInputStream类的fill函数抛出。

 protected void fill() throws IOException {
    ensureOpen();
    len = in.read(buf, 0, buf.length);
    if (len == -1) {
       throw new EOFException("Unexpected end of ZLIB input stream");
    }
    inf.setInput(buf, 0, len);
    }

     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 des;
    }
    
    
    public static String GetDeCompress(String src)
    {
        if (src == null || src.isEmpty()) {
            return src;
        }
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        GZIPInputStream gunzip = null;
        String des = null;
        try {
            ByteArrayInputStream in = new ByteArrayInputStream(
                    new BASE64Decoder().decodeBuffer(src));
            gunzip = new GZIPInputStream(in);
            byte[] buffer = new byte[1024];
            int n;

[1] [2] 下一页

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。