Работает ли Deflater.Setlevel ()?JAVA

Программисты JAVA общаются здесь
Anonymous
Работает ли Deflater.Setlevel ()?

Сообщение Anonymous »

defflater.setlevel () не работает, как и ожидалось для меня. < /p>

Код: Выделить всё

static void test1() throws Exception {
byte[] output = new byte[20];
Deflater compresser = new Deflater();
// compresser.setLevel(Deflater.BEST_COMPRESSION);
compresser.setInput("blah".getBytes("UTF-8"));
compresser.finish();
int len = compresser.deflate(output);
System.out.println("len="+ len+ " " +Arrays.toString(output));
}
< /code>

Выше выше работает для меня (Java 7), но когда я не понаправдуdeflate()
возвращает 0 байтов). То же самое происходит с любым уровнем сжатия, за исключением дефолта . Более конкретно, это только «работает» (скорее, это безвредно), когда набор уровней одинаково, который был установлен (пояснительно или неявно, как здесь) в конструкторе - то есть, его можно использовать только тогда, когда он бесполезен. < /P>

Смотрите пример на вопрос. Не установите уровень с помощью сеттера, сделайте это в конструкторе. Далеко не удовлетворительно, IMO - почему Setlevel () существует? Это сломано или мы что -то упускаем?

Подробнее здесь: https://stackoverflow.com/questions/176 ... level-work

Вернуться в «JAVA»