GZIPInputStream 到字符串
我正在尝试将 HTTP 响应的 gzip 正文转换为纯文本。我已获取此响应的字节数组并将其转换为 ByteArrayInputStream。然后我将其转换为 GZIPInputStream。我现在想要读取 GZIPInputStream 并将最终解压缩的 HTTP 响应正文存储为纯文本字符串。
此代码将最终解压缩的内容存储在 OutputStream 中,但我想将内容存储为字符串:
public static int sChunk = 8192;
ByteArrayInputStream bais = new ByteArrayInputStream(responseBytes);
GZIPInputStream gzis = new GZIPInputStream(bais);
byte[] buffer = new byte[sChunk];
int length;
while ((length = gzis.read(buffer, 0, sChunk)) != -1) {
out.write(buffer, 0, length);
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
要解码来自 InputStream 的字节,可以使用 输入流读取器。然后, BufferedReader 将允许您逐行读取流。
您的代码将如下所示:
To decode bytes from an InputStream, you can use an InputStreamReader. Then, a BufferedReader will allow you to read your stream line by line.
Your code will look like:
您应该以
InputStream 形式获得响应
而不是byte[]
。然后您可以使用GZIPInputStream< 解压缩它/code>
并使用
InputStreamReader
并最终使用StringWriter
。另请参阅:
如果您的最终意图是将响应解析为 HTML,那么我强烈建议仅使用 HTML 解析器,例如 Jsoup。那么就很简单:
You should rather have obtained the response as an
InputStream
instead of asbyte[]
. Then you can ungzip it usingGZIPInputStream
and read it as character data usingInputStreamReader
and finally write it as character data into aString
usingStringWriter
.See also:
If your final intent is to parse the response as HTML, then I strongly recommend to just use a HTML parser for this like Jsoup. It's then as easy as:
使用 try-with-resources 习惯用法(在退出块时自动关闭在 try(...) 中打开的所有资源)使代码更简洁。
使用 Apache IOUtils 将 inputStream 转换为使用默认字符集的字符串。
Use the try-with-resources idiom (which automatically closes any resources opened in try(...) on exit from the block) to make code cleaner.
Use Apache IOUtils to convert inputStream to String using default CharSet.
使用 Apache Commons 将 GzipInputStream 转换为 byteArray。
要将字节数组未压缩内容转换为字符串,请执行以下操作:
Use Apache Commons to convert GzipInputStream to byteArray.
To convert byte array uncompressed content to String, do something like this :
您可以使用 StringWriter 写入细绳
You can use the StringWriter to write to String
GZipwiki是一种文件格式,也是一种用于文件压缩和解压缩的软件应用程序。 gzip 是单文件/流无损数据压缩实用程序,生成的压缩文件通常具有后缀
.gz
GZip 文件扩展名 < strong>.gz,互联网媒体类型为
application/gzip
。以下函数用于压缩和解压缩。
GZipwiki is a file format and a software application used for file compression and decompression. gzip is a single-file/stream lossless data compression utility, where the resulting compressed file generally has the suffix
.gz
GZip Filename extension .gz and Internet media type is
application/gzip
.Following functions are used for compression and decompression.
你也可以做
AutoClosable 是一件好事
https://docs.oracle.com/javase/tutorial/essential/异常/tryResourceClose.html
you can also do
AutoClosable is a good thing
https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html