Проблемы с BZIP-OutputStream - PullRequest
       41

Проблемы с BZIP-OutputStream

0 голосов
/ 05 декабря 2010

первый код:

ByteArrayOutputStream bos = new ByteArrayOutputStream();
CBZip2OutputStream zos = new CBZip2OutputStream(bos);

provider.sendXMLFilelist(zos);
zos.flush();
bos.flush();

length = bos.size();

"провайдер" отправляет (скажем, 200) байтов в "zos".Но length равно == 1. Я знаю, что bzip хорош, но 1 байт кажется меньше.

Когда я делаю: provider.sendXMLFilelist(bos);, чем длина == 200.

Почему CBZip2OutputStream не выводит все свои сжатые байты?

Я использую эту реализацию: http://www.kohsuke.org/bzip2/

Ответы [ 2 ]

2 голосов
/ 06 декабря 2010

Я думаю, что теперь у меня есть ответ.Вы должны .close() поток bzip2.Bzip2 является блочным кодеком, и он не знает, должен ли он дополнять данные или есть еще.

Так что, сказав ему закрыть поток, он выводит все сжатые данные.

0 голосов
/ 05 декабря 2010

В прошлом у меня были проблемы с этой реализацией библиотеки, я бы порекомендовал вам взглянуть на другую реализацию bzip2 из Apache commons . Миграция не должна быть сложной (замените CBZip2OutputStream -> BZip2CompressorOutputStream, и вы должны идти).

...