首页 > 代码库 > Android4.4.4 GZIPOutputStream报错:Stream error
Android4.4.4 GZIPOutputStream报错:Stream error
在android 4.4.4 机器上使用网友提供的GZipUtils方法进行GZip压缩,但是会一直报错Stream error。错误位置:
- public static void compress(InputStream is, OutputStream os)
- throws Exception {
- GZIPOutputStream gos = new GZIPOutputStream(os);
- int count;
- byte data[] = new byte[BUFFER];
- while ((count = is.read(data, 0, BUFFER)) != -1) {
- gos.write(data, 0, count);
- }
- gos.finish();
- gos.flush();
- gos.close();
- }
但是其他android 版本的机器调试就毫无问题。百度也没有相关问题,只是说流的开启关闭顺序可能存在冲突。
因为我真正使用的方法是compress(byte[] data),所以我觉得flush(),和close()可能是问题原因。
- public static byte[] compress(byte[] data) throws Exception {
- ByteArrayInputStream bais = new ByteArrayInputStream(data);
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- // 压缩
- compress(bais, baos);
- byte[] output = baos.toByteArray();
- baos.flush();
- baos.close();
- bais.close();
- return output;
- }
于是将compress(InputStream is, OutputStream os)函数下的flush()和close()方法调用全部注释掉,再运行,OK!
======================
个人不是Java高手,到这里就没有继续研究了,只是看GZIPOutputStream的说明文档,这个类只有finish()和write()方法,flush()和close()方法都是父类的却没有在这个类中示出,所以其实调用GZIPOutputStream 对象的finish()方法就足够了。(个人表面理解而已,如有混淆视听,请见谅!)
Android4.4.4 GZIPOutputStream报错:Stream error
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。