Сжатие и распаковка части байтов во входном потоке - PullRequest
0 голосов
/ 22 марта 2012

Я печатаю чанк из входного потока с помощью

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()); }

но он пишет только 10 байтов .. остальные байты r пропущены ... это правильное использование GZIPOutputStream ???

1 Ответ

3 голосов
/ 22 марта 2012

Просто оберните GZIPOutputStream / GZIPInputStream вокруг вашего реального потока.

out = new GZIPOutputStream (out);

КСТАТИ: Если вы действительно хотите пропустить ровно 1024 байта, вы должны проверить возвращаемое значение skip и повторить с остальными байтами, потому что в некоторых случаях (буферы) метод не полностью пропускает до желаемой позиции.

...