[
https://issues.apache.org/jira/browse/COMPRESS-395?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Stefan Bodewig resolved COMPRESS-395.
-------------------------------------
Resolution: Fixed
Fix Version/s: 1.15
should be fixed in master, would be good if you could double-check.
> [Zip] Do not add data descriptor record when CRC and size values are known
> --------------------------------------------------------------------------
>
> Key: COMPRESS-395
> URL: https://issues.apache.org/jira/browse/COMPRESS-395
> Project: Commons Compress
> Issue Type: Improvement
> Components: Archivers
> Reporter: Plamen Totev
> Priority: Minor
> Labels: zip
> Fix For: 1.15
>
>
> Hi,
> Currently {{ZipArchiveOutputStream}} will add data descriptor record when the
> output do not provide random access. But if you add an entry using
> {{addRawArchiveEntry}} then the CRC, compressed size and uncompressed size
> could be know and there is no need for data descriptor record as those values
> could be set in the local file header. The current implementation does both -
> it sets the correct value in the local file header and adds additional data
> descriptor record. Here is the relevant code from
> {{ZipArchiveOutputStream#putArchiveEntry}}:
> {code:java}
> // just a placeholder, real data will be in data
> // descriptor or inserted later via SeekableByteChannel
> ZipEightByteInteger size = ZipEightByteInteger.ZERO;
> ZipEightByteInteger compressedSize = ZipEightByteInteger.ZERO;
> if (phased){
> size = new ZipEightByteInteger(entry.entry.getSize());
> compressedSize = new
> ZipEightByteInteger(entry.entry.getCompressedSize());
> } else if (entry.entry.getMethod() == STORED
> && entry.entry.getSize() != ArchiveEntry.SIZE_UNKNOWN) {
> // actually, we already know the sizes
> size = new ZipEightByteInteger(entry.entry.getSize());
> compressedSize = size;
> }
> z64.setSize(size);
> z64.setCompressedSize(compressedSize);
> {code}
> Maybe {{ZipArchiveOutputStream}} could be improved to not add data
> descriptor record when the CRC and size values are known in advance.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)