java - 在 Java 中解压缩 GZip 字符串

标签 java gzip

我可以找到很多可以让您解压 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/

相关文章:

Java 读取行空白

c# - 来自 MemoryStream 的 GZipStream 只返回几百个字节

linux - 多 cpu 核心 gzip 一个大文件

apache - HTTP 响应的 TTFB 和 gzip 压缩

http - 分块编码响应的 gzip 压缩?

javascript - 如何在 node.js 中解压缩 .gz 字符串

java - Log4J 2 异步记录器和线程

java - 无法在 Java 中将 EST 时间转换为 IST 时间

Java 日历 DAY_OF_WEEK 设置为零

java - 统一 Java 中的异常格式