[ https://issues.apache.org/jira/browse/COMPRESS-395?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Plamen Totev updated COMPRESS-395: ---------------------------------- Summary: Zip - Do not add data descriptor record when CRC and size values are known (was: Zip - Do not add data descriptor record when CRC and size value are known) > 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 > Reporter: Plamen Totev > Priority: Minor > > 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)