Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > добавление файла в архив


Автор: Pawl 1.4.2013, 13:11
Доброго времени суток!
Есть ли библиотека, имеющая простой функционал для осуществления сабжа?
А то стандартными средствами для этого приходится сначала извлекать весь архив во временную папку, добавлять туда нужный файл и перепаковывать архив заново.
Спасибо за инфу!

Автор: Stolzen 1.4.2013, 14:23
Я, честно говоря, всегда думал, что архиваторы именно так и работают - сначала распаковывают во временную папку, а потом перепаковывают. 

Автор: batigoal 1.4.2013, 16:28
Ммм, а разве нельзя читать из ZipInputStream и сразу писать новый ZipOutputStream? Это тоже решение с промежуточной распаковкой, но в явном виде временные файлы созданы не будут.

Автор: Amp 1.4.2013, 18:26
Посмотри на TrueZIP. 

Цитата(Stolzen @  1.4.2013,  14:23 Найти цитируемый пост)
Я, честно говоря, всегда думал, что архиваторы именно так и работают - сначала распаковывают во временную папку, а потом перепаковывают.  

Структура zip-архива позволяет добавлять файлы, не перепаковывая архива целиком.

Автор: Pawl 2.4.2013, 09:02
Цитата(batigoal @  1.4.2013,  16:28 Найти цитируемый пост)
Ммм, а разве нельзя читать из ZipInputStream и сразу писать новый ZipOutputStream? 

Можно попробовать, но я имел ввиду функционал "для ленивых" - что-то типа
Код

File zipFile = new File("archive.zip");
zipFile.add(newFile);

Автор: Pawl 2.4.2013, 18:15
если использовать commons io и http://zeroturnaround.com/labs/zeroturnaround-releases-yazlj-yet-another-zip-library-for-java/ штуку, добавление требует в 8 строк кода:
Код

        File zipFile = new File(zipFileName);
        File dir = new File("D://temp");
        dir.mkdir();
        ZipUtil.unpack(zipFile, dir);
        File file = new File(fileName);
        FileUtils.copyFileToDirectory(file, dir);
        ZipUtil.pack(dir, zipFile);
        FileUtils.deleteDirectory(dir);

А http://www.javaer.org/java/1-zip/4-add-files-to-existing-zip-file код, в котором вовсе не применяется сторонних библиотек, тут как раз читается из ZipInputStream и сразу пишется в ZipOutputStream, без создания временных папок.
Что же, похоже, я сам ответил на свой вопрос и на сим тему закрываю.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)