让我们一步一步走:
您需要a
GZIPInputStream
来读取压缩的数据(而不是GZIPOutputStream
;输出流用于压缩数据)。有了这个流,您将能够读取未压缩的原始二进制数据。这要求InputStream
在构造函数中。您需要一个能够读取base64编码数据的输入流。我建议
base64InputStream
从apache-commons-prec派上用场。使用构造函数,您可以设置行长,行分隔符并设置doEnpre=false
为解码数据。这又需要另一个输入流-原始的base64编码数据。该流取决于您如何获取数据。理想情况下,数据应该按已
InputStream
解决的方式提供。如果不是,则可能必须使用ByteArrayInputStream
(如果为二进制),StringBufferInputStream
(如果为字符串)等。
这种逻辑大致是:
InputStream fromHadoop = ...; // 3rd paragraphbase64InputStream b64is = // 2nd paragraph new base64InputStream(fromHadoop, false, 80, "n".getBytes("UTF-8"));GZIPInputStream zis = new GZIPInputStream(b64is); // 1st paragraph请注意
base64InputStream(行长和行尾字节数组)的参数,您可能需要对其进行调整。



