Discussion:
(compress) read data descriptor?
(too old to reply)
Jason Harrop
2018-07-20 00:21:42 UTC
Permalink
Given a ZipFile, its easy to read the size of ZipArchiveEntry

How to do this when using ZipArchiveInputStream?

The documentation says: ZipFile has access to the central directory and can
extract entries using the data descriptor reliably. The same is true for
ZipArchiveInputStream as long as the entry is DEFLATED.

Assuming the entry is DEFLATED, I'm not sure how to read that? thanks...
Stefan Bodewig
2018-07-27 16:36:28 UTC
Permalink
Post by Jason Harrop
Given a ZipFile, its easy to read the size of ZipArchiveEntry
How to do this when using ZipArchiveInputStream?
The documentation says: ZipFile has access to the central directory and can
extract entries using the data descriptor reliably. The same is true for
ZipArchiveInputStream as long as the entry is DEFLATED.
TBH the paragraph doesn't make much sense to me but has very likely been
written by my former self.
Post by Jason Harrop
Assuming the entry is DEFLATED, I'm not sure how to read that?
ZipFile uses random access and can read size and crc information from
anywhere inside of the archive.

ZipArchiveInputStream reads a stream byte by byte and can only provide
you with information it has read by the time you ask for it. The
structure of a ZIP archive has meta data in the so called local file
header followed by the actual content of each entry. Sometimes this
local file header contains the entry's size and you can ask
ZipArchiveEntry for its size before reading the entry. Under certain
circumstances - and using DEFLATE is one of them - the size can be
stored after the entry data inside the so called data descriptor. If the
archive uses the data descriptor ZipArchiveEntry's getSize can only
return "unknown" until you have read all data of the entry. Once you
have read the entry's content completely, ZipArchiveEntry will know the
size. This is what the "Note" in
https://commons.apache.org/proper/commons-compress/javadocs/api-release/org/apache/commons/compress/archivers/zip/ZipArchiveEntry.html#getSize--
says.

Stefan

---------------------------------------------------------------------
To unsubscribe, e-mail: user-***@commons.apache.org
For additional commands, e-mail: user-***@commons.apache.org

Loading...