1. 程式人生 > >將GZIPInputStream方式的流轉化為位元組陣列或是字串

將GZIPInputStream方式的流轉化為位元組陣列或是字串

Android的網路請求用的是HttpURLConnection的時候,當請求成功的時候會使用 InputStream inputStream = conn.getInputStream();進行資料的接收,這個inputStream就是資料。
今天做專案的時候由於使用的藍芽印表機,這個印表機根據業務要求需要接收圖片,(後端是使用的16進位制的字元轉儲存的這張圖片,在c#中列印報表,這個報表就是一張圖片;後來後端又使用了壓縮流的方式進行傳輸),我在安卓端又使用了很古老的方式去解壓縮資料,一波三折啊,終於解壓縮成功。

程式碼如下:

public static String streamToString2
(InputStream in) throws IOException { //定義一個記憶體輸出流 ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); //將流轉換成字串 GZIPInputStream gis = new GZIPInputStream(in); int len1 = -1; byte[] b1 = new byte[1024]; while ((len1 = gis.read(b1)) != -1
) { byteArrayOutputStream.write(b1, 0, len1); } byteArrayOutputStream.close(); //轉化為陣列 // byte[] bytes = byteArrayOutputStream.toByteArray(); return byteArrayOutputStream.toString(); }

這個樣就把流轉化為一個字串了。當然也可以轉化為一個位元組陣列,直接交給bitmapfactory就可以解碼為一張圖片了。