Рекурсивное использование ZipInputStream

 
0
 
Java
ava
lazycat | 19.02.2013, 20:55
Доброго времени суток всем!

Вопрос совершенное не из практической плоскости, скорее он для "...пренебрегающих презренной пользой, единого прекрасного жрецов".

Есть zip-архив, в котором содержится файл, также представляющий собой zip-архив. Надо прочитать данные из вложенного zip-архива.
Решение "в лоб" очевидно: прочитать zip-файл из архива, сохранить на диске, потом открыть с помощью ZipFile и снова прочитать содержимое.
Но большинство с негодованием отвергнут такое решение. Надо найти ZipEntry, связать с ним поток, сделать поток ZipInputStream, снова найти нужный ZipEntry и прочитать его.
Но тут возникает проблема, как получить ZipFile для файла которого нет?

Одним словом, надеюсь, что возникнет дискуссия для эстетов от программирования.
Ответы (2)
ava
korian | 19.02.2013, 20:44 #

ZipFile file = new ZipFile("external.zip");
ZipEntry entry = file.getEntry("internal.zip") ;
InputStream internalStream = file.getInputStream(entry);
ZipInputStream internalZipStream = new ZipInputStream(internalStream);
while(тут надо какую-то проверку) {
    ZipEntry internalEntry = internalZipStream.getNextEntry();
    internalZipStream.read(...); //читаем entry
    internalZipStream.closeEntry();
}

Поидее где-то так. Не проверял и не компилил. Чисто по докам написано.
ava
lazycat | 21.02.2013, 17:55 #
Цитата (korian @  19.2.2013,  20:44 findReferencedText)
    ZipEntry internalEntry = internalZipStream.getNextEntry();
  internalZipStream.read(...); //читаем entry


Интересное решение, но почему после получения ZipEntry поток ZipStream должен оказаться связанным именно с этой Entry? Вобще-то это логично, но где это написано?

Добавлено позднее:
Цитата (lazycat @  21.2.2013,  17:55 findReferencedText)
но где это написано?



Прошу прощения за дурацкий вопрос, конечно же именно в доке это и написано. Человеку свойственно игнорировать то, что лежит у него перед глазами.

korian, большое спасибо !!!
Зарегистрируйтесь или войдите, чтобы написать.
Фирма дня
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Участники
  korian   lazycat
advanced
Отправить