我可以找到很多可以解压缩 GZip 文件的函数,但是如何解压缩 GZip 字符串呢?
我正在尝试解析 HTTP 响应,其中响应正文是用 GZip 压缩的。但是,整个响应只是存储在字符串中,因此字符串的一部分包含二进制字符。
我正在尝试使用:
byte responseBodyBytes[] = responseBody.getBytes();
ByteArrayInputStream bais = new ByteArrayInputStream(responseBodyBytes);
GZIPInputStream gzis = new GZIPInputStream(bais);
但这只会引发异常: java.io.IOException: Not in GZIP format
不存在 GZip 字符串这样的东西。 GZip 是二进制的,字符串是文本。
如果要压缩字符串,则需要先将其转换为二进制 - 例如和OutputStreamWriter
链接到压缩OutputStream
(例如GZIPOutputStream http://download.oracle.com/javase/6/docs/api/java/util/zip/GZIPOutputStream.html)
同样地read数据,您可以使用InputStreamReader
链接到减压InputStream
(例如GZIPInputStream http://download.oracle.com/javase/6/docs/api/java/util/zip/GZIPInputStream.html).
一种轻松读取的方法Reader
是使用CharStreams.toString(Readable) http://google.github.io/guava/releases/19.0/api/docs/com/google/common/io/CharStreams.html#toString(java.lang.Readable) from Guava https://github.com/google/guava,或类似的库。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)