Java-библиотека для работы с Zip файлами

Мне нужно создать zip файл из моей java-программы.

Мне нужна библиотека, которая сможет создавать zip файлы и хранить записи из текста и файла в нем, и самое главное - мне нужно, чтобы она могла хранить в ней весь каталог (каталог с несколькими уровнями других каталогов, которые у каждого из них есть файлы).

Можете ли вы мне предложить?

Ответ 1

Библиотека для выполнения жесткой части обработки Zip файлов (например, сжатия) встроена прямо в Java SE (java.util.zip):

http://download.oracle.com/javase/1.5.0/docs/api/java/util/zip/package-summary.html

Для ваших функций более высокого уровня было бы трудно записать некоторые функции для рекурсивного прохождения каталога и копирования файлов в ZipOutputStream - возможно, менее 50 строк кода или около того.

Хороший пример в http://www.javareference.com/jrexamples/viewexample.jsp?id=108 - для выполнения отдельных файлов требуется небольшая работа.

Ответ 2

Отъезд Zip4j - http://www.lingala.net/zip4j/

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

Ответ 3

В таких областях, как правило, есть что-то рассмотреть с Apache (или, может быть, более конкретно: Apache Commons). Я нашел это: http://commons.apache.org/compress/zip.html (я еще не проверял его).

Ответ 4

Другой вариант, который вы можете проверить, - zt-zip, доступный с центральной страницы Maven и страницы проекта https://github.com/zeroturnaround/zt-zip

Он имеет стандартную функциональность упаковки и распаковки (в потоках и в файловой системе) + множество вспомогательных методов для проверки файлов в архиве или добавления/удаления записей.

Ответ 6

easyzip4j

Загрузите его из github.

https://github.com/willwarren/easyzip4j/downloads

Использование

EasyZip.zip("./folderToZip", "./myZipFile.zip");

ИЛИ

EasyZip.zip("./folderToZip", "./myZipFile.zip", 
    new EasyZipParameters().setZipFolderContentsNotFolder(true));

(также рассматривается в readme https://github.com/willwarren/easyzip4j/blob/master/README.md)

Это проект на основе maven.
Зависит от commons-io и log4j. Не стесняйтесь редактировать!