GZIPInputStream转换为String
问题内容:
首先,对不起,如果我的术语有点业余,请尝试忍受我;)
我正在尝试将HTTP响应的压缩后的正文转换为纯文本。我已将此响应的字节数组转换为ByteArrayInputStream。然后,我将其转换为GZIPInputStream。现在,我想读取GZIPInputStream并将最终解压缩的HTTP响应正文存储为纯文本字符串。
这段代码会将最终解压缩的内容存储在OutputStream中,但我想将内容存储为String:
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);
}
问题答案:
要从InputStream解码字节,可以使用InputStreamReader。然后,BufferedReader将允许您逐行读取流。
您的代码如下所示:
ByteArrayInputStream bais = new ByteArrayInputStream(responseBytes);
GZIPInputStream gzis = new GZIPInputStream(bais);
InputStreamReader reader = new InputStreamReader(gzis);
BufferedReader in = new BufferedReader(reader);
String readed;
while ((readed = in.readLine()) != null) {
System.out.println(readed);
}