我可以找到很多可以让您解压 GZip 文件的函数,但是我该如何解压 GZip 字符串呢?
我正在尝试解析响应正文使用 GZip 压缩的 HTTP 响应。然而,整个响应只是存储在一个字符串中,因此部分字符串包含二进制字符。
我正在尝试使用:
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
)
与读取数据一样,您可以使用链接到解压缩InputStream
(例如GZIPInputStream
)的InputStreamReader
。
从 Reader
轻松阅读的一种方法是使用 CharStreams.toString(Readable)
来自 Guava ,或类似的库。
关于java - 在 Java 中解压缩 GZip 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3621750/