Почему Java неправильно пишет класс как "deflater"? Слово «дефлятор». Jeez! Извини, пришлось снять это с моей груди.
Как уже отмечалось, ожидаемое использование - продолжать вызывать deflate
, пока вы не получите все выходные данные от сжатия. Однако, если вы действительно хотите сделать это за один вызов, тогда существует ограничение на сумму, на которую deflate может расширить данные. В zlib есть функция, которую, к сожалению, Java не делает доступной, которая называется deflateBound()
, которая обеспечивает эту верхнюю границу. Вы можете просто использовать консервативную границу этой функции, скопировав соответствующую строку здесь:
complen = sourceLen +
((sourceLen + 7) >> 3) + ((sourceLen + 63) >> 6) + 5;