Как заменить файл в zip-архиве

Как заменить файл в zip-архиве

Я работаю с *.jarфайлами, насколько я понимаю, это архивный формат, которым я могу управлять с помощью стандартных инструментов, таких как zipкоманды unzip.

Мне часто нужно заменить уже сжатый файл. Пока что я распаковываю, удаляю старый файл, перемещаю новый в хорошее место (это исходный архив, поэтому онвысокослоистый), а затем я снова его сжал.

Можно ли сделать это быстрее? Это будет 3 информации: файл для замены, целевой архив, в котором нужно заменить, и путь к файлу для замены в архиве.

решение1

Это можно сделать в два этапа:

zip -d myjar.jar path/to/file/to/delete
jar uf myjar.jar -C base/path path/to/file/to/add

Эту часть можно проигнорировать -C base/path, если вы уже находитесь в базовом каталоге (содержащем path/to/file/to/add).

При работе с JAR-файлами, а не с простыми ZIP-файлами, вам следует привыкнуть использовать , jarнасколько zipэто возможно; это гарантирует правильное сохранение манифеста.

С помощью простого ZIP-файла вы можете добавлять или обновлять файл, просто (повторно)архивируя его; поэтому вместо команды jarвыше используйте:

zip myzip.zip path/to/file/to/add

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

Связанный контент