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
Он имеет стандартную функциональность упаковки и распаковки (в потоках и в файловой системе) + множество вспомогательных методов для проверки файлов в архиве или добавления/удаления записей.
Ответ 5
Существует привязка Java к известной библиотеке 7zip, вы можете проверить ее на http://sevenzipjbind.sourceforge.net/
Ответ 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. Не стесняйтесь редактировать!