所以在ZIP文件的末尾,就像最后一个64K一样,有一个中央目录,你可以从中找到它自己包含的ZIP文件。
现在我已将ZIP文件加载到ZipInputStream中,在此之前我已经声明了一个长文件,即ZIP文件的长度 - 64k。
所以我想跳过尽可能多的字节和长变量状态,然后才开始读取信息。但我真的不明白.skip()
方法如何适用于ZipInputStream。
使用后,.getNextEntry()
方法仍会从头开始,.read(byte[64 * 1024])
会告诉我它不应该是流的结尾?
那么这个skip()方法实际上是做什么的,以及如何获取我的中央目录?
答案 0 :(得分:2)
据我所知,你在这里混合了两件事。
将您的数据读作普通InputStream
,转到您想要的位置,然后自己开始阅读和解析普通数据。
或者使用ZipInputStream
API并遍历ZipEntries
。 ZipInputStream
是原始流之上的抽象,它处理读取中心目录并透明地解压缩压缩字节。因此,您无法使用ZipInputStream
。
有关详细信息,请参阅