將GZIPInputStream方式的流轉化為位元組陣列或是字串
阿新 • • 發佈:2019-01-08
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就可以解碼為一張圖片了。