Мне нужно хранить несовместимые двоичные данные (в основном файлы различных распространенных форматов, JPEG, PDF, MS-Office и некоторые другие нечетные файлы). Медленное сжатие не является проблемой, но я ищу разумную быструю декомпрессию и хороший коэффициент сжатия, который я могу получить.Альтернативы GZIPInput/OutputStream с лучшими коэффициентами сжатия?
На данный момент моя система немедленно сохраняет несжатые данные, и демон пытается сжать данные позже, на данный момент единственной опцией, которую я реализовал, является использование GZIP. Если файл может быть сжат, он прозрачно заменяется сжатой версией демона (вот почему медленное сжатие меня совсем не беспокоит). Если бы было больше вариантов, я был бы счастлив позволить демонам попробовать все варианты и пойти с тем, который дает наилучшее сжатие.
Для того, чтобы система была простой, я не хочу проходить большую часть, чтобы интегрировать материал, который не поддерживает использование Stream API (например, 7-Zip LZMA). Существуют ли какие-либо реализации сжатия рядом с GZIP, предоставленные JRE, которые могут быть полезны? Предпочтение отдается FOS.
Просто FYI, JPEG и PDF уже сжаты как есть, выполнение некоторых дополнительных сжатий gzip на этих типах файлов не будет их значительно сжимать. –
Да, сжатие этих файлов может даже их увеличивать. Хорошая реализация может фильтровать по расширению и оставлять только те сжатые файлы. – Miquel
Да JPEG обычно плохо сжимаются из-за их уже сжатого характера, но я не вижу причин рассматривать их по другому пути кода. Удивительно, что даже GZIP по-прежнему занимает 2-5% от большинства JPEG, по-видимому, из-за того, что в файле есть миниатюра и некоторые несжатые метаданные. PDF-файлы, которые не содержат изображений, обычно сжимаются довольно хорошо (почти как текстовые файлы). – Durandal