天天看點

Android解壓縮ZIP / GZIP資料(基于InflaterInputStream實作)

在實際的項目代碼使用過程中,發現如果用Java類庫标準指定的GZIPInputStream讀取壓縮資料解壓不能穩定工作,原因不明。反而使用InflaterInputStream可以替代GZIPInputStream穩定、正常工作,現在把基于InflaterInputStream的zip\gzip解壓代碼工具方法給出:

public static byte[] decompress(byte[] compress) throws Exception {
		ByteArrayInputStream bais = new ByteArrayInputStream(compress);
		InflaterInputStream iis = new InflaterInputStream(bais);

		ByteArrayOutputStream baos = new ByteArrayOutputStream();

		int c = 0;
		byte[] buf = new byte[BUFFER_SIZE];
		while (true) {
			c = iis.read(buf);

			if (c == EOF)
				break;

			baos.write(buf, 0, c);
		}

		baos.flush();

		return baos.toByteArray();
	}           

其中,EOF = -1,BUFFER_SIZE值可以根據自身的項目定制。



繼續閱讀