我正在开发一个Java程序,它允许我在zip / rar文件中查看图像,而无需将其解压缩到我的硬盘上的文件夹中。我希望能够像普通的图像浏览器一样翻阅它们,如果需要可能可以放大/缩小。
从我所看到的,它必须被提取,即使它只是一个临时文件夹,我很好,只要程序可以自己删除它。我相信ZipFile会是我应该做更多研究的东西吗?我见过的大部分内容都是处理文本文件而不是图像文件,因此我不确定如何进行研究。
我正在寻找我是否在正确的轨道上或者是否有任何好的资源/特定的api我可以寻求帮助,因为我几个月没有做任何编码(除了轻的PHP和HTML) )或者大约一年的任何java,我已经把它放在后面燃烧了足够长的时间。
提前致谢。 :)
答案 0 :(得分:2)
您使用ZipFile
走在正确的轨道上,我认为您无需在查看图像之前提取到磁盘。
ZipFile
对象会为您提供entries()
的内容列表。您可以迭代此ZipEntry
个对象的集合,以显示要查看的文件的选择,当然,如果您愿意,也可以将其过滤到已知的扩展名。
奇怪的是,它是ZipFile
对象而不是单个ZipEntry
对象,它们会为给定条目提供InputStream
。您可以将此对象读入内存中的byte[]
并将其发送到负责显示图像的组件。
有一点需要注意的是,对于zip文件,为了获得存储在zip中的最后一个文件,它基本上必须解压缩整个存档,这可能很耗时。因此,根据使用模式,将文件缓存在磁盘或内存中的LRU缓存中可能是有意义的。
您没有提及这是否适用于Swing应用程序,但如果是这样可能对显示图像有帮助:
http://docs.oracle.com/javase/tutorial/uiswing/components/icon.html