寻找有关ZipInputStream的知识

时间:2014-05-10 16:18:03

标签: java

因此,在使用ZipInputStream时,要在WEB上获取Zip文件的InputStream,是否在使用时将整个ZIP文件下载到用户计算机中?

例如,如果程序使用ZipInputStream查看zip的内容,它是如何工作的?是下载zip然后查看它还是?

1 个答案:

答案 0 :(得分:1)

ZIP文件结构类似于(LOC+Content)+ CEN,其中LOC + Content是标题,每个条目的内容和CEN是索引。

ZipInputStream仅使用"本地文件(LOC)"一次一个条目地读取输入源。每个条目之前的记录。

它不支持回溯到以前的条目,这意味着无法获取所有条目的列表,然后读取某些条目的内容。

它不支持通常位于ZIP文件末尾的中央目录(CEN)记录。仅使用LOC记录并忽略CEN在技术上不是读取ZIP文件的正确方法,但通常它不是非常关键。例如,CEN提供了一种方法,可以将某些条目标记为已删除,而无需将其从文件中删除,因此忽略CEN将导致读取过时的条目。

如果您需要获取ZIP文件中的条目列表,则必须扫描整个文件,这意味着如果通过HTTP访问整个文件,则下载整个文件。 如果您需要阅读某些条目的内容,则必须打开新的HTTP连接并重新读取(跳过)至少所需数据的数据量。

似乎首先将整个ZIP文件下载到本地计算机,然后使用本地文件可能是更好的解决方案。