Android 4.4.4 DataFormatException:stream error

最近做一个项目,在公司开发完毕之后,客户测试中总是出问题,而我们的手机确测不出来问题,后来了解到客户使用的手机是小米4,于是公司又买了台小米4进行测试。(这里不是为了黑小米)确实有问题,期初logcat调到error时找不到错误,后来换到warm才发现错误信息。具体信息如下:



错误是DataFormatException:stream error。因为这里使用了GzipUtils 方法对信息流进行压缩。但是其他手机没有问题,后来对比了下发现,小米4的系统是android4.4.4,所以可能是android系统对于方法不支持。代码很简单,如下:

   ByteArrayOutputStream bytes=new ByteArrayOutputStream();
        GZIPOutputStream gzip=new GZIPOutputStream(bytes);
        GarUtils.transfer(parent.getContent(),gzip);
        try{
            gzip.finish();

            gzip.flush();

        }catch (Exception e){
            e.printStackTrace();
        }finally {
            gzip.close();
        }
网上查了 大多是说流的开启和关闭顺序有可能存在冲突,但是看了半天源码,发现 GZIPOutputStream 的源码说明里只有 finish()方法和write方法 而close()和flush()是父类的方法,所以尝试着去掉了 flush()方法  考虑到流到操作最后都要关闭 所以没有去掉close()方法 。

再次运行 搞定!

个人也是android 菜鸟 。希望大家有什么好的方法 多多指教 目前不确定其他android 版本是否存在同样问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值