Просмотр изображений в формате zip без распаковки

Я работаю над программой Java, которая позволит мне просматривать изображения в файле zip/rar, не распаковывая его в папку на моем жестком диске. Я хотел бы иметь возможность пролистывать их, как в обычном средстве просмотра изображений, возможно, при необходимости увеличивать/уменьшать масштаб.

Из того, что я изучил, его нужно будет извлечь, даже если он просто во временную папку, с чем я согласен, если программа может удалить его самостоятельно после этого. Я считаю, что ZipFile будет чем-то, что мне следует больше исследовать? Большая часть того, что я видел, связана с текстовыми документами, а не с файлами изображений, поэтому я не уверен, как продолжить свое исследование.

Я смотрю, нахожусь ли я на правильном пути или есть ли какие-либо хорошие ресурсы/конкретные API, которые я мог бы изучить, чтобы помочь, поскольку я не делал никакого кодирования в течение нескольких месяцев (за исключением легких php и html) или любой другой. java примерно через год, и у меня это было на втором плане достаточно долго.

Заранее спасибо. :)


person Rath    schedule 11.09.2013    source источник


Ответы (1)


Вы на правильном пути с ZipFile, и я не думаю, что вам нужно извлекать на диск перед просмотром изображений.

Объект ZipFile предоставит вам список своего содержимого с помощью entries(). Вы можете повторять эту коллекцию объектов ZipEntry, чтобы предоставить выбор файла для просмотра, и, конечно же, отфильтровать его по известным расширениям, если хотите.

Как ни странно, это объект ZipFile, а не отдельные объекты ZipEntry, которые дадут вам InputStream для данной записи. Вы можете прочитать этот объект в byte[] в памяти и отправить его компоненту, который будет отвечать за отображение изображения.

Одно предостережение заключается в том, что с zip-файлами, чтобы добраться до последнего файла, хранящегося в zip-архиве, в основном придется распаковывать весь архив, что может занять много времени. Таким образом, может иметь смысл кэшировать файлы на диске или в кэше LRU в памяти в зависимости от шаблона использования.

Вы не упомянули, предназначено ли это для приложения Swing, но если это так, это может быть полезно для отображения изображений:

http://docs.oracle.com/javase/tutorial/uiswing/components/icon.html

person UFL1138    schedule 11.09.2013
comment
Спасибо! Я тогда копну глубже. Раньше я не имел дело с какими-либо приложениями Swing, но я тоже изучу это. :D - person Rath; 11.09.2013