压缩和解压缩输入流中的字节块

时间:2012-03-22 07:53:01

标签: java inputstream compression

我使用

从输入流打印一个块
int skip = in.skip(1024); //skip first 1024b

int end = in.available(); // remaining size in b

for (int i = skip; i < end; i++) {

    //prints chunk of data from in-stream from skip till end

     System.out.println(in.read()); 

} 

而不是从头到尾打印,我想压缩跳到头之间的字节(in.read()) 有人可以帮我先压缩然后解压缩相同的


我试过这个

FileOutputStream fos = new FileOutputStream(ChunkZipName);
GZIPOutputStream chunkZipper = new GZIPOutputStream (fos); 
for (int i = skip; i < end; i++) {
chunkZipper.write(in.read()); }

但它只写10bytes ..剩余字节r跳过...这是GZIPOutputStream的正确用法???

1 个答案:

答案 0 :(得分:3)

只需将GZIPOutputStream / GZIPInputStream包裹在您的真实流中。

out = new GZIPOutputStream (out);

<强>顺便说一句: 如果你想真正跳过1024个字节,你必须检查 skip的返回值并重复剩余的字节,因为在某些情况下(缓冲区),该方法不会完全跳过期望的位置。