Java ZipOutputStream только дефлировать определенные файлы / фильтр дефляции - PullRequest
2 голосов
/ 28 сентября 2011

Это действительно вопрос из двух частей.

Предисловие: я использую WinRAR для сжатия файлов. Это дает вам возможность сжатия только определенных файлов. Я могу фильтровать по расширению файла, так что, скажем, файлы JPEG не сжимаются, а другие файлы.

  1. Может ли это быть сделано с файлами ZIP в целом или это только возможность формата WinRAR / RAR?

  2. Если это возможно сделать с форматом ZIP, есть ли способ сделать это с помощью Java ZipOutputStream класса? Или, может быть, с использованием какой-либо другой реализации Java ZIP ZIP

Чтобы уточнить, я хотел бы сказать моему ZipOutputStream, что нужно сжимать только файлы с определенным расширением. Это возможно?

Спасибо

Ответы [ 2 ]

2 голосов
/ 28 сентября 2011

Да, вы можете сделать это с ZipOutputStream.Перед каждым файлом (или когда вы хотите его изменить) вызывайте setLevel с константой Deflater, в вашем случае Deflater.NO_COMPRESSION.Документация по этому вопросу должна быть более понятной.

Вы можете легко создать подкласс ZipOutputStream, который переопределяет putNextEntry для обработки этой логики.

1 голос
/ 28 сентября 2011

ZipOutputStream имеет методы для контроля того, должны ли последующие записи быть дефлированными и с каким уровнем сжатия .

Это также может быть указано на уровне ZipEntry (где оно имеет приоритет).

...