Распакуйте архив Gzip в Java

Попробуйте удалить , вернуть в теге формы и вернуть код состояния в функцию обратного вызова

.
5
задан Rui Carneiro 10 March 2009 в 17:41
поделиться

3 ответа

Необходимо использовать буферизацию. Запись маленьких частей данных будет неэффективной. Реализация сжатия находится в собственном коде в JDK солнца. Даже если бы это не была буферизированная производительность, то должен обычно превышать разумный файл или сеть I/O.

OutputStream out = new BufferedOutputStream(new GZIPOutputStream(rawOut));

InputStream in = new BufferedInputStream(new GZIPInputStream(rawIn));

Поскольку собственный код используется, чтобы реализовать распаковку/алгоритм сжатия, стараться очень близко для потока (и не только базового потока) после использования. Я нашел, что загрузки наличия бродящего вокруг 'Deflaters' очень плохи для производительности.

ZipInputStream соглашения с архивами файлов, который является совершенно другой вещью от сжатия потока.

8
ответ дан 13 December 2019 в 22:17
поделиться

Для такого масштаба Вы могли бы хотеть пойти собственный компонент, предполагая, что Ваши требования платформы ограничены. Можно использовать JNI, чтобы назвать библиотеку или вызвать собственное использование команды ProcessBuilder.

-2
ответ дан 13 December 2019 в 22:17
поделиться

Когда Вы говорите это GZipInputStreamпроизводительность была ужасна, Вы могли быть более конкретными? Вы узнавали, было ли это узким местом ЦП или узким местом ввода-вывода? Вы использовали буферизацию на обоих вводах и выводах? Если бы Вы могли бы отправить код, Вы использовали, который был бы очень полезен.

Если Вы находитесь на многоядерной машине, Вы могли бы попытаться все еще использовать GZipInputStream но с помощью нескольких потоков, один на ядро, с общей очередью файлов все еще для обработки. (Любой файл был бы только обработан единственным потоком.), Который мог бы сделать вещи хуже, если Вы - связанный ввод-вывод, но это может стоить попытки.

4
ответ дан 13 December 2019 в 22:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: