Android4.4.4 GZIPOutputStream報錯:Stream error

來源:互聯網
上載者:User

標籤:android   gzip   

在android 4.4.4 機器上使用網友提供的GZipUtils方法進行GZip壓縮,但是會一直報錯Stream error。錯誤位置:

  1. public static void compress(InputStream is, OutputStream os)  
  2.             throws Exception {  
  3.   
  4.         GZIPOutputStream gos = new GZIPOutputStream(os);  
  5.   
  6.         int count;  
  7.         byte data[] = new byte[BUFFER];  
  8.         while ((count = is.read(data, 0, BUFFER)) != -1) {  
  9.             gos.write(data, 0, count);  
  10.         }  
  11.   
  12.         gos.finish();  
  13.   
  14.         gos.flush();  
  15.         gos.close();  
  16.     } 

但是其他android 版本的機器調試就毫無問題。百度也沒有相關問題,只是說流的開啟關閉順序可能存在衝突。

因為我真正使用的方法是compress(byte[] data),所以我覺得flush(),和close()可能是問題原因。

  1. public static byte[] compress(byte[] data) throws Exception {  
  2.         ByteArrayInputStream bais = new ByteArrayInputStream(data);  
  3.         ByteArrayOutputStream baos = new ByteArrayOutputStream();  
  4.   
  5.         // 壓縮  
  6.         compress(bais, baos);  
  7.   
  8.         byte[] output = baos.toByteArray();  
  9.   
  10.         baos.flush();  
  11.         baos.close();  
  12.   
  13.         bais.close();  
  14.   
  15.         return output;  
  16.     } 

於是將compress(InputStream is, OutputStream os)函數下的flush()和close()方法調用全部注釋掉,再運行,OK!

======================

個人不是Java高手,到這裡就沒有繼續研究了,只是看GZIPOutputStream的說明文檔,這個類只有finish()和write()方法,flush()和close()方法都是父類的卻沒有在這個類中示出,所以其實調用GZIPOutputStream 對象的finish()方法就足夠了。(個人表面理解而已,如有混淆視聽,請見諒!)


Android4.4.4 GZIPOutputStream報錯:Stream error

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.