Сжимать большой файл в ZIP с Java

Я был бы юниором, я предполагаю:) Я думаю, что оценил бы неофициальный подход. Это, вероятно, во многом зависит от Ваш и символы Вашего mentee, но я сказал бы, что Вы учитесь лучше всего, если у Вас нет эго в пути. Повредите лед, удостоверьтесь, что существует обратная связь в оба направления. Вещи как рассмотрение кода (оба пути?) и случайное парное программирование может работать, и если существует хорошее соответствие, это может быть большая забава, также!

8
задан Jon Seigel 14 March 2010 в 20:14
поделиться

4 ответа

Согласно вашему комментарию к ответу Сэма, вы, очевидно, создали ZipOutputStream, который обертывает ByteArrayOutputStream. ByteArrayOutputStream, конечно, кэширует сжатый результат в памяти. Если вы хотите, чтобы он был записан на диск, вы должны обернуть ZipOutputStream вокруг FileOutputStream.

11
ответ дан 5 December 2019 в 11:25
поделиться

ZipOutputStream основан на потоке, он не удерживает память. Ваш БУФЕР может быть слишком большим.

1
ответ дан 5 December 2019 в 11:25
поделиться

Есть библиотека под названием TrueZip , которую я успешно использовал в прошлом для такого рода вещей.

Я не могу гарантировать, что она лучше справляется с фронт буферизации. Я знаю, что он делает много вещей с помощью собственного кода, а не зависит от Zip API JDK.

Так что, на мой взгляд, стоит попробовать.

3
ответ дан 5 December 2019 в 11:25
поделиться

Интересно, если это из-за того, что вы храните контент в ZipEntry, возможно, он в основном загружает все свое содержимое перед записью ZipEntry. Вам нужно использовать Zip? Если вам нужно сжать только один поток данных, вы можете вместо этого посмотреть GZIPOutputStream. Я считаю, что у него не будет такой проблемы.

Надеюсь, это поможет.

0
ответ дан 5 December 2019 в 11:25
поделиться
Другие вопросы по тегам:

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