У меня есть веб-программа, где я хочу, чтобы пользователь мог импортировать файл .war
, и я могу извлечь определенные файлы из файла .war
. Я нашел две библиотеки классов: java.util.zip.*
и java.util.jar.*
. Насколько я понимаю, WAR файл - это специальный JAR файл, который является специальным ZIP файлом. Так было бы лучше использовать java.util.jar
? Если файлы ZIP и JAR почти одинаковы, почему существует необходимость в двух разных библиотеках?
Как извлечь .war файлы в java? ZIP против JAR
Ответ 1
Если вы посмотрите на JarFile API, вы увидите, что это подкласс ZipFile.
Классы, специфичные для jar, в основном просто добавляют jar-специфические функции, такие как прямая поддержка атрибутов файла манифеста и т.д.
Это ООП "в действии"; поскольку файлы jar являются zip файлами, классы jar могут использовать zip-функции и предоставлять дополнительную утилиту.
Ответ 2
WAR файл - это просто файл JAR, чтобы извлечь его, просто выпустите следующую команду jar -
jar -xvf yourWARfileName.war
Если команда jar не найдена, что иногда происходит в командной строке Windows, укажите полный путь, то есть в моем случае это,
c:\java\jdk-1.7.0\bin\jar -xvf my-file.war
Ответ 3
Просто переименуйте .war
в .jar
и разархивируйте его с помощью Winrar
(или любого другого менеджера архива).
Ответ 4
Если вы используете Linux или Ubuntu, вы можете напрямую извлекать данные из файла .war
.
Файл A war
- это всего лишь файл jar
, чтобы извлечь его, просто выполните следующую команду с помощью программы jar
:
jar -xvf yourWARfileName.war
Ответ 5
Как вы сказали, банка представляет собой zip файл (не специальный тип, а просто простой старый почтовый индекс), поэтому можно было бы заставить библиотеку работать. Причиной является то, что средний человек, видя расширение *.zip, имеет тенденцию распаковывать его. Поскольку сервер приложений хочет, чтобы он был распакован, простое переименование позволяет людям просто распаковывать его по привычке. Аналогично, файл *.war также должен оставаться несжатым.
java.util.jar в основном добавляет дополнительные функции java.util.zip с очень небольшими дополнительными накладными расходами. Пусть java.util.jar будет помощником в публикации и т.д. И используйте его.
Ответ 6
Jar class/package предназначен для определенных механизмов Jar файлов, где в некоторых случаях используется манифест, который используется файлами Jar.
Класс/пакет Zip файлов обрабатывает любые сжатые файлы, которые включают файлы Jar, который является типом сжатого файла.
Таким образом, классы Jar расширяют классы пакетов Zip.