1089 lines
44 KiB
Plaintext
1089 lines
44 KiB
Plaintext
|
Apache Commons Compress RELEASE NOTES
|
||
|
|
||
|
Apache Commons Compress software defines an API for working with
|
||
|
compression and archive formats. These include: bzip2, gzip, pack200,
|
||
|
lzma, xz, Snappy, traditional Unix Compress, DEFLATE, DEFLATE64, LZ4,
|
||
|
Brotli, Zstandard and ar, cpio, jar, tar, zip, dump, 7z, arj.
|
||
|
|
||
|
Release 1.18
|
||
|
------------
|
||
|
|
||
|
New features:
|
||
|
o It is now possible to specify the arguments of zstd-jni's
|
||
|
ZstdOutputStream constructors via Commons Compress as well.
|
||
|
Issue: COMPRESS-460.
|
||
|
Thanks to Carmi Grushko.
|
||
|
|
||
|
Fixed Bugs:
|
||
|
o The example Expander class has been vulnerable to a path
|
||
|
traversal in the edge case that happens when the target
|
||
|
directory has a sibling directory and the name of the target
|
||
|
directory is a prefix of the sibling directory's name.
|
||
|
Thanks to Didier Loiseau.
|
||
|
o Changed the OSGi Import-Package to also optionally import
|
||
|
javax.crypto so encrypted archives can be read.
|
||
|
Issue: COMPRESS-456.
|
||
|
o Changed various implementations of the close method to better
|
||
|
ensure all held resources get closed even if exceptions are
|
||
|
thrown during the closing the stream.
|
||
|
Issue: COMPRESS-457.
|
||
|
o ZipArchiveInputStream can now detect the APK Signing Block
|
||
|
used in signed Android APK files and treats it as an "end of
|
||
|
archive" marker.
|
||
|
Issue: COMPRESS-455.
|
||
|
o The cpio streams didn't handle archives using a multi-byte
|
||
|
encoding properly.
|
||
|
Issue: COMPRESS-459.
|
||
|
Thanks to Jens Reimann.
|
||
|
o ZipArchiveInputStream#read would silently return -1 on a
|
||
|
corrupted stored entry and even return > 0 after hitting the
|
||
|
end of the archive.
|
||
|
Issue: COMPRESS-463.
|
||
|
o ArArchiveInputStream#read would allow to read from the stream
|
||
|
without opening an entry at all.
|
||
|
Issue: COMPRESS-462.
|
||
|
|
||
|
Release 1.17
|
||
|
------------
|
||
|
|
||
|
New features:
|
||
|
o Added a unit test that is supposed to fail if we break the
|
||
|
OSGi manifest entries again.
|
||
|
Issue: COMPRESS-443.
|
||
|
o Add a new SkipShieldingInputStream class that can be used with
|
||
|
streams that throw an IOException when skip is invoked.
|
||
|
Issue: COMPRESS-449.
|
||
|
o New constructors have been added to SevenZFile that accept
|
||
|
char[]s rather than byte[]s in order to avoid a common error
|
||
|
of using the wrong encoding when creating the byte[]. This
|
||
|
change may break source compatibility for client code that
|
||
|
uses one of the constructors expecting a password and passes
|
||
|
in null as password. We recommend to change the code to use a
|
||
|
constructor without password argument.
|
||
|
Issue: COMPRESS-452.
|
||
|
|
||
|
Fixed Bugs:
|
||
|
o Removed the objenesis dependency from the pom as it is not
|
||
|
needed at all.
|
||
|
o Fixed resource leak in ParallelScatterZipCreator#writeTo.
|
||
|
Issue: COMPRESS-446.
|
||
|
o Certain errors when parsing ZIP extra fields in corrupt
|
||
|
archives are now turned into ZipException, they used to
|
||
|
manifest as ArrayIndexOutOfBoundsException before.
|
||
|
Issue: COMPRESS-447.
|
||
|
o IOUtils.copy now verifies the buffer size is bigger than 0.
|
||
|
Issue: COMPRESS-451.
|
||
|
o ZipArchiveInputStream failed to read some files with stored
|
||
|
entries using a data descriptor.
|
||
|
Issue: COMPRESS-454.
|
||
|
|
||
|
Changes:
|
||
|
o Fixed some code examples.
|
||
|
Github Pull Request #63.
|
||
|
Thanks to Marchenko Sergey.
|
||
|
o The streams returned by ZipFile and most other decompressing
|
||
|
streams now provide information about the number of compressed
|
||
|
and uncompressed bytes read so far. This may be used to detect
|
||
|
a ZipBomb if the compression ratio exceeds a certain
|
||
|
threshold, for example.
|
||
|
For SevenZFile a new method returns the statistics for the
|
||
|
current entry.
|
||
|
Issue: COMPRESS-445.
|
||
|
Thanks to Andreas Beeker.
|
||
|
o Added a workaround for a bug in AdoptOpenJDK for S/390 to
|
||
|
BZip2CompressorInputStream.
|
||
|
Issue: COMPRESS-453.
|
||
|
|
||
|
Release 1.16.1
|
||
|
--------------
|
||
|
|
||
|
Fixed Bug:
|
||
|
o Fixed the OSGi manifest entry for imports that has been broken
|
||
|
in 1.16.
|
||
|
Issue: COMPRESS-442.
|
||
|
|
||
|
Release 1.16
|
||
|
------------
|
||
|
|
||
|
New features:
|
||
|
o Add read-only support for Zstandard compression based on the
|
||
|
Zstd-jni project.
|
||
|
Issue: COMPRESS-423. Thanks to Andre F de Miranda.
|
||
|
o Added auto-detection for Zstandard compressed streams.
|
||
|
Issue: COMPRESS-425.
|
||
|
o Added write-support for Zstandard compression.
|
||
|
Issue: COMPRESS-426.
|
||
|
o Added read-only DEFLATE64 support to ZIP archives and as
|
||
|
stand-alone CompressorInputStream.
|
||
|
Issue: COMPRESS-380. Thanks to Christian Marquez Grabia.
|
||
|
o Added read-only DEFLATE64 support to 7z archives.
|
||
|
Issue: COMPRESS-437.
|
||
|
|
||
|
Fixed Bugs:
|
||
|
o Synchronized iteration over a synchronizedList in
|
||
|
ParallelScatterZipCreator.
|
||
|
Issue: COMPRESS-430. Thanks to Bruno P. Kinoshita.
|
||
|
o ZipFile could get stuck in an infinite loop when parsing ZIP
|
||
|
archives with certain strong encryption headers.
|
||
|
Issue: COMPRESS-432.
|
||
|
o Added improved checks to detect corrupted bzip2 streams and
|
||
|
throw the expected IOException rather than obscure
|
||
|
RuntimeExceptions.
|
||
|
Issue: COMPRESS-424.
|
||
|
|
||
|
Changes:
|
||
|
o Replaces instanceof checks with a type marker in LZ77 support code.
|
||
|
Issue: COMPRESS-435. Thanks to BELUGA BEHR.
|
||
|
o Updated XZ for Java dependency to 1.8 in order to pick up bug fix
|
||
|
to LZMA2InputStream's available method.
|
||
|
o ZipArchiveEntry now exposes how the name or comment have been
|
||
|
determined when the entry was read.
|
||
|
Issue: COMPRESS-429. Thanks to Damiano Albani.
|
||
|
o ZipFile.getInputStream will now always buffer the stream
|
||
|
internally in order to improve read performance.
|
||
|
Issue: COMPRESS-438.
|
||
|
o Speed improvement for DEFLATE64 decompression.
|
||
|
Issue: COMPRESS-440. Thanks to Dawid Weiss.
|
||
|
o Added a few extra sanity checks for the rarer compression
|
||
|
methods used in ZIP archives.
|
||
|
Issue: COMPRESS-436.
|
||
|
o Simplified the special handling for the dummy byte required by
|
||
|
zlib when using java.util.zip.Inflater.
|
||
|
Issue: COMPRESS-441.
|
||
|
o Various code cleanups.
|
||
|
Github Pull Request #61. Thanks to Shahab Kondri.
|
||
|
o TarArchiveEntry's preserveLeadingSlashes constructor argument
|
||
|
has been renamed and can now also be used to preserve the
|
||
|
drive letter on Windows.
|
||
|
|
||
|
Release 1.15
|
||
|
------------
|
||
|
|
||
|
New features:
|
||
|
o Added magic MANIFEST entry Automatic-Module-Name so the module
|
||
|
name will be org.apache.commons.compress when the jar is used
|
||
|
as an automatic module in Java9.
|
||
|
Issue: COMPRESS-397.
|
||
|
o Added a new utility class FixedLengthBlockOutputStream that
|
||
|
can be used to ensure writing always happens in blocks of a
|
||
|
given size.
|
||
|
Issue: COMPRESS-405. Thanks to Simon Spero.
|
||
|
o It is now possible to specify/read custom PAX headers when
|
||
|
writing/reading tar archives.
|
||
|
Issue: COMPRESS-400. Thanks to Simon Spero.
|
||
|
|
||
|
Fixed Bugs:
|
||
|
o Make sure "version needed to extract" in local file header and
|
||
|
central directory of a ZIP archive agree with each other.
|
||
|
Also ensure the version is set to 2.0 if DEFLATE is used.
|
||
|
Issue: COMPRESS-394.
|
||
|
o Don't use a data descriptor in ZIP archives when copying a raw
|
||
|
entry that already knows its size and CRC information.
|
||
|
Issue: COMPRESS-395.
|
||
|
o Travis build redundantly repeats compilation and tests redundantly
|
||
|
GitHub Pull Request #43. Thanks to Simon Spero.
|
||
|
Issue: COMPRESS-413
|
||
|
o The MANIFEST of 1.14 lacks an OSGi Import-Package for XZ for
|
||
|
Java.
|
||
|
Issue: COMPRESS-396.
|
||
|
o BUILDING.md now passes the RAT check.
|
||
|
Issue: COMPRESS-406. Thanks to Simon Spero.
|
||
|
o Made sure ChecksumCalculatingInputStream receives valid
|
||
|
checksum and input stream instances via the constructor.
|
||
|
Issue: COMPRESS-412. Thanks to Michael Hausegger.
|
||
|
o TarArchiveOutputStream now verifies the block and record sizes
|
||
|
specified at construction time are compatible with the tar
|
||
|
specification. In particular 512 is the only record size
|
||
|
accepted and the block size must be a multiple of 512.
|
||
|
Issue: COMPRESS-407. Thanks to Simon Spero.
|
||
|
o Fixed class names of CpioArchiveEntry and
|
||
|
CpioArchiveInputStream in various Javadocs.
|
||
|
Issue: COMPRESS-415.
|
||
|
o The code of the extended timestamp zip extra field incorrectly
|
||
|
assumed the time was stored as unsigned 32-bit int and thus
|
||
|
created incorrect results for years after 2037.
|
||
|
Issue: COMPRESS-416. Thanks to Simon Spero.
|
||
|
o Removed ZipEncoding code that became obsolete when we started
|
||
|
to require Java 5 as baseline long ago.
|
||
|
Issue: COMPRESS-410. Thanks to Simon Spero.
|
||
|
o The tar package will no longer try to parse the major and
|
||
|
minor device numbers unless the entry represents a character
|
||
|
or block special file.
|
||
|
Issue: COMPRESS-417.
|
||
|
o When reading tar headers with name fields containing embedded
|
||
|
NULs, the name will now be terminated at the first NUL byte.
|
||
|
Issue: COMPRESS-421. Thanks to Roel Spilker.
|
||
|
o Simplified TarArchiveOutputStream by replacing the internal
|
||
|
buffering with new class FixedLengthBlockOutputStream.
|
||
|
Issue: COMPRESS-409.
|
||
|
|
||
|
Release 1.14
|
||
|
------------
|
||
|
|
||
|
New features:
|
||
|
o Added write support for Snappy.
|
||
|
Issue: COMPRESS-246.
|
||
|
o Added support for LZ4 (block and frame format).
|
||
|
Issue: COMPRESS-271.
|
||
|
o Add static detect(InputStream in) to CompressorStreamFactory
|
||
|
and ArchiveStreamFactory
|
||
|
Issue: COMPRESS-385.
|
||
|
o Added a way to limit amount of memory ZCompressorStream may
|
||
|
use.
|
||
|
Issue: COMPRESS-382. Thanks to Tim Allison.
|
||
|
o Added a way to limit amount of memory ZCompressorStream may
|
||
|
use.
|
||
|
Issue: COMPRESS-386. Thanks to Tim Allison.
|
||
|
o Added a way to limit amount of memory LZMACompressorStream and
|
||
|
XZCompressorInputStream may use.
|
||
|
Issue: COMPRESS-382. Thanks to Tim Allison.
|
||
|
o Add Brotli decoder based on the Google Brotli library.
|
||
|
Issue: COMPRESS-392. Thanks to Philippe Mouawad.
|
||
|
o ZipEntry now exposes its data offset.
|
||
|
Issue: COMPRESS-390. Thanks to Zbynek Vyskovsky.
|
||
|
o Using ZipArchiveEntry's setAlignment it is now possible to
|
||
|
ensure the data offset of an entry starts at a file position
|
||
|
that at word or page boundaries.
|
||
|
A new extra field has been added for this purpose.
|
||
|
Issue: COMPRESS-391. Thanks to Zbynek Vyskovsky.
|
||
|
|
||
|
Fixed Bugs:
|
||
|
o SnappyCompressorInputStream slides the window too early
|
||
|
leading to ArrayIndexOutOfBoundsExceptions for some streams.
|
||
|
Issue: COMPRESS-378.
|
||
|
o ZipArchiveEntry#isUnixSymlink now only returns true if the
|
||
|
corresponding link flag is the only file-type flag set.
|
||
|
Issue: COMPRESS-379. Thanks to Guillaume Boué.
|
||
|
o Fixed an integer overflow in CPIO's CRC calculation.
|
||
|
Pull Request #17. Thanks to Daniel Collin.
|
||
|
o Make unit tests work on Windows paths with spaces in their names.
|
||
|
Issue: COMPRESS-387.
|
||
|
o Internal location pointer in ZipFile could get incremented
|
||
|
even if nothing had been read.
|
||
|
Issue: COMPRESS-389.
|
||
|
o LZMACompressorOutputStream#flush would throw an exception
|
||
|
rather than be the NOP it promised to be.
|
||
|
Issue: COMPRESS-393.
|
||
|
|
||
|
Changes:
|
||
|
o The blocksize for FramedSnappyCompressorInputStream can now be
|
||
|
configured as some IWA files seem to be using blocks larger
|
||
|
than the default 32k.
|
||
|
Issue: COMPRESS-358.
|
||
|
o BZip2CompressorInputstream now uses BitInputStream internally.
|
||
|
Pull Request #13. Thanks to Thomas Meyer.
|
||
|
o Improved performance for concurrent reads from ZipFile when
|
||
|
reading from a file.
|
||
|
Issue: COMPRESS-388. Thanks to Zbynek Vyskovsky.
|
||
|
|
||
|
Release 1.13
|
||
|
------------
|
||
|
|
||
|
Commons Compress 1.13 is the first version to require Java 7 at
|
||
|
runtime.
|
||
|
|
||
|
Changes in this version include:
|
||
|
|
||
|
New features:
|
||
|
o SevenZFile, SevenZOutputFile, ZipFile and
|
||
|
ZipArchiveOutputStream can now work on non-file resources if
|
||
|
they can be accessed via SeekableByteChannel.
|
||
|
Issue: COMPRESS-327.
|
||
|
o Allow compressor extensions through a standard JRE ServiceLoader.
|
||
|
Issue: COMPRESS-368.
|
||
|
o Allow archive extensions through a standard JRE ServiceLoader.
|
||
|
Issue: COMPRESS-369.
|
||
|
o Add write support for the legacy LZMA format, this requires XZ
|
||
|
for Java 1.6.
|
||
|
Issue: COMPRESS-373.
|
||
|
o Add write support for the legacy LZMA stream to 7z, this
|
||
|
requires XZ for Java 1.6.
|
||
|
Issue: COMPRESS-374.
|
||
|
o Allow the clients of ParallelScatterZipCreator to provide
|
||
|
ZipArchiveEntryRequestSupplier.
|
||
|
Issue: COMPRESS-375. Thanks to Plamen Totev.
|
||
|
o Add a version-independent link to the API docs of the latest
|
||
|
release.
|
||
|
Issue: COMPRESS-372.
|
||
|
|
||
|
Fixed Bugs:
|
||
|
o BitInputStream could return bad results when overflowing
|
||
|
internally - if two consecutive reads tried to read more than
|
||
|
64 bits.
|
||
|
Issue: COMPRESS-363.
|
||
|
o ZipArchiveInputStream.closeEntry does not properly advance to
|
||
|
next entry if there are junk bytes at end of data section.
|
||
|
Issue: COMPRESS-364. Thanks to Mike Mole.
|
||
|
o ZipArchiveInputStream now throws an Exception if it encounters
|
||
|
a broken ZIP archive rather than signaling end-of-archive.
|
||
|
Issue: COMPRESS-367. Thanks to Mike Mole.
|
||
|
o ScatterZipOutputStream didn't close the StreamCompressor
|
||
|
causing a potential resource leak.
|
||
|
Issue: COMPRESS-377.
|
||
|
|
||
|
Changes:
|
||
|
o Update Java requirement from 6 to 7.
|
||
|
Issue: COMPRESS-360.
|
||
|
o Clarified which TarArchiveEntry methods are useless for
|
||
|
entries read from an archive.
|
||
|
Issue: COMPRESS-366.
|
||
|
|
||
|
Release 1.12
|
||
|
------------
|
||
|
|
||
|
Commons Compress 1.12 is the first version to require Java 6 at
|
||
|
runtime.
|
||
|
|
||
|
Release 1.12 changes the behavior of BZip2CompressorOutputStream's
|
||
|
finalize method so that it no longer invokes finish. This is going to
|
||
|
break code that relied on the finalizer to clean up an unfinished
|
||
|
stream. The code will need to be changed to call finish or close
|
||
|
itself. Note that a finalizer is not guaranteed to run, so the feature
|
||
|
was not 100% effective in any case.
|
||
|
|
||
|
New features:
|
||
|
|
||
|
o FramedSnappyCompressorInputStream now supports the dialect of
|
||
|
Snappy used by the IWA files contained within the zip archives
|
||
|
used in Apple's iWork 13 files.
|
||
|
Issue: COMPRESS-352.
|
||
|
|
||
|
Fixed Bugs:
|
||
|
|
||
|
o SevenZFile.read() throws an IllegalStateException for empty entries.
|
||
|
Issue: COMPRESS-348.
|
||
|
o TarArchiveInputStream failed to parse PAX headers that included
|
||
|
blank lines.
|
||
|
Issue: COMPRESS-355. Thanks to Jeremy Gustie.
|
||
|
o TarArchiveInputStream failed to parse PAX headers whose tar entry
|
||
|
name ended with a slash.
|
||
|
Issue: COMPRESS-356. Thanks to Jeremy Gustie.
|
||
|
|
||
|
Changes:
|
||
|
o Update requirement from Java 5 to 6.
|
||
|
Issue: COMPRESS-349.
|
||
|
o TarArchiveEntry wastefully allocates empty arrays.
|
||
|
Issue: COMPRESS-350.
|
||
|
o Javadoc for BZip2CompressorInputStream(InputStream, boolean) should
|
||
|
refer to IOEx, not NPE.
|
||
|
Issue: COMPRESS-353.
|
||
|
o PureJavaCrc32C in the snappy package is now final so it is now safe
|
||
|
to call a virtual method inside the constructor.
|
||
|
Issue: COMPRESS-354.
|
||
|
|
||
|
o ZipArchiveInputStream and CpioArchiveInputStream could throw
|
||
|
exceptions who's messages contained potentially corrupt entry names
|
||
|
read from a broken archive. They will now sanitize the names by
|
||
|
replacing unprintable characters and restricting the length to 255
|
||
|
characters.
|
||
|
Issue: COMPRESS-351.
|
||
|
o BZip2CompressorOutputStream no longer tries to finish the output
|
||
|
stream in finalize. This is a breaking change for code that relied
|
||
|
on the finalizer.
|
||
|
Issue: COMPRESS-357.
|
||
|
|
||
|
|
||
|
Release 1.11
|
||
|
------------
|
||
|
|
||
|
New features:
|
||
|
o TarArchiveInputStream now supports reading global PAX headers.
|
||
|
Issue: COMPRESS-347.
|
||
|
o The PAX headers for sparse entries written by star are now
|
||
|
applied.
|
||
|
Issue: COMPRESS-346.
|
||
|
o GNU sparse files using one of the PAX formats are now
|
||
|
detected, but cannot be extracted.
|
||
|
Issue: COMPRESS-345.
|
||
|
o New method SevenZFile.getEntries can be used to list the
|
||
|
contents of a 7z archive.
|
||
|
Issue: COMPRESS-341.
|
||
|
o When using Zip64Mode.Always also use ZIP64 extensions inside
|
||
|
the central directory.
|
||
|
GitHub Pull Request #10 Thanks to Matt Hovey.
|
||
|
o ZipFile.getRawInputStream() is now part of the public API
|
||
|
Issue: COMPRESS-323.
|
||
|
o Allow byte-for-byte replication of Zip entries.
|
||
|
GitHub Pull Request #6. Thanks to Jason van Zyl.
|
||
|
o TarArchiveEntry's preserveLeadingSlashes is now a property and used
|
||
|
on later calls to setName, too.
|
||
|
This behavior is a breaking change.
|
||
|
Issue: COMPRESS-328.
|
||
|
o Added read-only support for bzip2 compression used inside of
|
||
|
ZIP archives.
|
||
|
GitHub Pull Request #4. Thanks to Sören Glimm.
|
||
|
|
||
|
Fixed Bugs:
|
||
|
o ArArchiveInputStream can now read GNU extended names that are
|
||
|
terminated with a NUL byte rather than a linefeed.
|
||
|
Issue: COMPRESS-344.
|
||
|
o Native Memory Leak in Sevenz-DeflateDecoder.
|
||
|
Issue: COMPRESS-343. Thanks to Rene Preissel.
|
||
|
o SevenZFile will now only try to drain an entry's content when
|
||
|
moving on to the next entry if data is read from the next
|
||
|
entry. This should improve performance for applications that
|
||
|
try to skip over entries.
|
||
|
Issue: COMPRESS-340. Thanks to Dawid Weiss.
|
||
|
o file names of tar archives using the xstar format are now
|
||
|
parsed properly.
|
||
|
Issue: COMPRESS-336.
|
||
|
o checksums of tars that pad the checksum field to the left are
|
||
|
now calculated properly.
|
||
|
Issue: COMPRESS-335.
|
||
|
o ArArchiveInputStream failed to read past the first entry when
|
||
|
BSD long names have been used.
|
||
|
Issue: COMPRESS-334. Thanks to Jeremy Gustie.
|
||
|
o Added buffering for random access which speeds up 7Z support.
|
||
|
Issue: COMPRESS-333. Thanks to Dawid Weiss.
|
||
|
o The checksum validation of TararchiveEntry is now as strict as
|
||
|
the validation of GNU tar, which eliminates a few cases of
|
||
|
false positives of ArchiveStreamFactory.
|
||
|
This behavior is a breaking change since the check has become
|
||
|
more strict but any archive that fails the checksum test now
|
||
|
would also fail it when extracted with other tools and must be
|
||
|
considered an invalid archive.
|
||
|
Issue: COMPRESS-331.
|
||
|
o SnappyCompressorInputStream and
|
||
|
FramedSnappyCompressorInputStream returned 0 at the end of the
|
||
|
stream under certain circumstances.
|
||
|
Issue: COMPRESS-332.
|
||
|
o Adjusted unit test to updates in Java8 and later that change
|
||
|
the logic of ZipEntry#getTime.
|
||
|
Issue: COMPRESS-326.
|
||
|
o TarArchiveOutputStream will now recognize GNU long name and
|
||
|
link entries even if the special entry has a different name
|
||
|
than GNU tar uses itself. This seems to be the case for
|
||
|
archives created by star.
|
||
|
Issue: COMPRESS-324.
|
||
|
o ArrayIndexOutOfBoundsException when InfoZIP type 7875 extra
|
||
|
fields are read from the central directory.
|
||
|
Issue: COMPRESS-321.
|
||
|
|
||
|
Release 1.10
|
||
|
------------
|
||
|
|
||
|
Release 1.10 moves the former
|
||
|
org.apache.commons.compress.compressors.z._internal_ package which
|
||
|
breaks backwards compatibility for code which used the old package.
|
||
|
|
||
|
This also changes the superclass of ZCompressorInputStream which makes
|
||
|
this class binary incompatible with the one of Compress 1.9. Code
|
||
|
that extends ZCompressorInputStream will need to be recompiled in
|
||
|
order to work with Compress 1.10.
|
||
|
|
||
|
New features:
|
||
|
o CompressorStreamFactory can now auto-detect DEFLATE streams
|
||
|
with ZLIB header.
|
||
|
Issue: COMPRESS-316. Thanks to Nick Burch.
|
||
|
o CompressorStreamFactory can now auto-detect LZMA streams.
|
||
|
Issue: COMPRESS-313.
|
||
|
o Added support for parallel compression. This low-level API allows
|
||
|
a client to build a zip/jar file by using the class
|
||
|
org.apache.commons.compress.archivers.zip.ParallelScatterZipCreator.
|
||
|
|
||
|
Zip documentation updated with further notes about parallel features.
|
||
|
|
||
|
Please note that some aspects of jar creation need to be
|
||
|
handled by client code and is not part of commons-compress for this
|
||
|
release.
|
||
|
Issue: COMPRESS-296. Thanks to Kristian Rosenvold.
|
||
|
o Cut overall object instantiation in half by changing file
|
||
|
header generation algorithm, for a 10-15 percent performance
|
||
|
improvement.
|
||
|
|
||
|
Also extracted two private methods createLocalFileHeader
|
||
|
and createCentralFileHeader in ZipArchiveOutputStream.
|
||
|
These may have some interesting additional usages in the
|
||
|
near future. Thanks to Kristian Rosenvold.
|
||
|
o New methods in ZipArchiveOutputStream and ZipFile allows
|
||
|
entries to be copied from one archive to another without
|
||
|
having to re-compress them.
|
||
|
Issue: COMPRESS-295. Thanks to Kristian Rosenvold.
|
||
|
|
||
|
Fixed Bugs:
|
||
|
o TarArchiveInputStream can now read entries with group or
|
||
|
user ids > 0x80000000.
|
||
|
Issue: COMPRESS-314.
|
||
|
o TarArchiveOutputStream can now write entries with group or
|
||
|
user ids > 0x80000000.
|
||
|
Issue: COMPRESS-315.
|
||
|
o TarArchiveEntry's constructor with a File and a String arg
|
||
|
didn't normalize the name.
|
||
|
Issue: COMPRESS-312.
|
||
|
o ZipEncodingHelper no longer reads system properties directly
|
||
|
to determine the default charset.
|
||
|
Issue: COMPRESS-308.
|
||
|
o BZip2CompressorInputStream#read would return -1 when asked to
|
||
|
read 0 bytes.
|
||
|
Issue: COMPRESS-309.
|
||
|
o ArchiveStreamFactory fails to pass on the encoding when creating
|
||
|
some streams.
|
||
|
* ArjArchiveInputStream
|
||
|
* CpioArchiveInputStream
|
||
|
* DumpArchiveInputStream
|
||
|
* JarArchiveInputStream
|
||
|
* TarArchiveInputStream
|
||
|
* JarArchiveOutputStream
|
||
|
Issue: COMPRESS-306.
|
||
|
o Restore immutability/thread-safety to ArchiveStreamFactory.
|
||
|
The class is now immutable provided that the method setEntryEncoding
|
||
|
is not used. The class is thread-safe.
|
||
|
Issue: COMPRESS-302.
|
||
|
o Restore immutability/thread-safety to CompressorStreamFactory.
|
||
|
The class is now immutable provided that the method
|
||
|
setDecompressConcatenated is not used. The class is thread-safe.
|
||
|
Issue: COMPRESS-303.
|
||
|
o ZipFile logs a warning in its finalizer when its constructor
|
||
|
has thrown an exception reading the file - for example if the
|
||
|
file doesn't exist.
|
||
|
Issue: COMPRESS-297.
|
||
|
o Improved error message when tar encounters a groupId that is
|
||
|
too big to write without using the STAR or POSIX format.
|
||
|
Issue: COMPRESS-290. Thanks to Kristian Rosenvold.
|
||
|
o SevenZFile now throws the specific PasswordRequiredException
|
||
|
when it encounters an encrypted stream but no password has
|
||
|
been specified.
|
||
|
Issue: COMPRESS-298.
|
||
|
|
||
|
Changes:
|
||
|
o Moved the package
|
||
|
org.apache.commons.compress.compressors.z._internal_ to
|
||
|
org.apache.commons.compress.compressors.lzw and made it part
|
||
|
of the API that is officially supported. This will break
|
||
|
existing code that uses the old package. Thanks to Damjan Jovanovic.
|
||
|
|
||
|
For complete information on Apache Commons Compress, including instructions
|
||
|
on how to submit bug reports, patches, or suggestions for improvement,
|
||
|
see the Apache Commons Compress website:
|
||
|
|
||
|
https://commons.apache.org/compress/
|
||
|
|
||
|
Old Release Notes
|
||
|
=================
|
||
|
|
||
|
Release 1.9
|
||
|
-----------
|
||
|
|
||
|
New features:
|
||
|
o Added support for DEFLATE streams without any gzip framing.
|
||
|
Issue: COMPRESS-263.
|
||
|
Thanks to Matthias Stevens.
|
||
|
|
||
|
Fixed Bugs:
|
||
|
o When reading 7z files unknown file properties and properties of type
|
||
|
kDummy are now ignored.
|
||
|
Issue: COMPRESS-287.
|
||
|
o Expanding 7z archives using LZMA compression could cause an
|
||
|
EOFException.
|
||
|
Issue: COMPRESS-286.
|
||
|
o Long-Name and -link or PAX-header entries in TAR archives always had
|
||
|
the current time as last modfication time, creating archives that
|
||
|
are different at the byte level each time an archive was built.
|
||
|
Issue: COMPRESS-289.
|
||
|
Thanks to Bob Robertson.
|
||
|
|
||
|
Changes:
|
||
|
o Checking for XZ for Java may be expensive. The result will now be
|
||
|
cached outside of an OSGi environment. You can use the new
|
||
|
XZUtils#setCacheXZAvailability to overrride this default behavior.
|
||
|
Issue: COMPRESS-285.
|
||
|
|
||
|
Release 1.8.1
|
||
|
-------------
|
||
|
|
||
|
New features:
|
||
|
o COMPRESS-272: CompressorStreamFactory can now auto-detect Unix compress
|
||
|
(".Z") streams.
|
||
|
|
||
|
Fixed Bugs:
|
||
|
o COMPRESS-270: The snappy, ar and tar inputstreams might fail to read from a
|
||
|
non-buffered stream in certain cases.
|
||
|
o COMPRESS-277: IOUtils#skip might skip fewer bytes than requested even though
|
||
|
more could be read from the stream.
|
||
|
o COMPRESS-276: ArchiveStreams now validate there is a current entry before
|
||
|
reading or writing entry data.
|
||
|
o ArjArchiveInputStream#canReadEntryData tested the current
|
||
|
entry of the stream rather than its argument.
|
||
|
o COMPRESS-274: ChangeSet#delete and deleteDir now properly deal with unnamed
|
||
|
entries.
|
||
|
o COMPRESS-273: Added a few null checks to improve robustness.
|
||
|
o COMPRESS-278: TarArchiveInputStream failed to read archives with empty
|
||
|
gid/uid fields.
|
||
|
o COMPRESS-279: TarArchiveInputStream now again throws an exception when it
|
||
|
encounters a truncated archive while reading from the last
|
||
|
entry.
|
||
|
o COMPRESS-280: Adapted TarArchiveInputStream#skip to the modified
|
||
|
IOUtils#skip method. Thanks to BELUGA BEHR.
|
||
|
|
||
|
Changes:
|
||
|
o The dependency on org.tukaani:xz is now marked as optional.
|
||
|
|
||
|
Release 1.8
|
||
|
-----------
|
||
|
|
||
|
New features:
|
||
|
o GzipCompressorInputStream now provides access to the same
|
||
|
metadata that can be provided via GzipParameters when writing
|
||
|
a gzip stream.
|
||
|
Issue: COMPRESS-260.
|
||
|
o SevenZOutputFile now supports chaining multiple
|
||
|
compression/encryption/filter methods and passing options to
|
||
|
the methods.
|
||
|
Issue: COMPRESS-266.
|
||
|
o The (compression) method(s) can now be specified per entry in
|
||
|
SevenZOutputFile.
|
||
|
Issue: COMPRESS-261.
|
||
|
o SevenZArchiveEntry "knows" which method(s) have been used to
|
||
|
write it to the archive.
|
||
|
Issue: COMPRESS-258.
|
||
|
o The 7z package now supports the delta filter as method.
|
||
|
o The 7z package now supports BCJ filters for several platforms.
|
||
|
You will need a version >= 1.5 of XZ for Java to read archives
|
||
|
using BCJ, though.
|
||
|
Issue: COMPRESS-257.
|
||
|
|
||
|
Fixed Bugs:
|
||
|
o BZip2CompressorInputStream read fewer bytes than possible from
|
||
|
a truncated stream.
|
||
|
Issue: COMPRESS-253.
|
||
|
o SevenZFile failed claiming the dictionary was too large when
|
||
|
archives used LZMA compression for headers and content and
|
||
|
certain non-default dictionary sizes.
|
||
|
Issue: COMPRESS-253.
|
||
|
o CompressorStreamFactory.createCompressorInputStream with
|
||
|
explicit compression did not honor decompressConcatenated
|
||
|
Issue: COMPRESS-259.
|
||
|
o TarArchiveInputStream will now read archives created by tar
|
||
|
implementations that encode big numbers by not adding a
|
||
|
trailing NUL.
|
||
|
Issue: COMPRESS-262.
|
||
|
o ZipArchiveInputStream would return NUL bytes for the first 512
|
||
|
bytes of a STORED entry if it was the very first entry of the
|
||
|
archive.
|
||
|
Issue: COMPRESS-264.
|
||
|
o When writing PAX/POSIX headers for TAR entries with
|
||
|
backslashes or certain non-ASCII characters in their name
|
||
|
TarArchiveOutputStream could fail.
|
||
|
Issue: COMPRESS-265.
|
||
|
o ArchiveStreamFactory now throws a StreamingNotSupported - a
|
||
|
new subclass of ArchiveException - if it is asked to read from
|
||
|
or write to a stream and Commons Compress doesn't support
|
||
|
streaming for the format. This currently only applies to the
|
||
|
7z format.
|
||
|
Issue: COMPRESS-267.
|
||
|
|
||
|
Release 1.7
|
||
|
-----------
|
||
|
|
||
|
New features:
|
||
|
o Read-Only support for Snappy compression.
|
||
|
Issue: COMPRESS-147. Thanks to BELUGA BEHR.
|
||
|
o Read-Only support for .Z compressed files.
|
||
|
Issue: COMPRESS-243. Thanks to Damjan Jovanovic.
|
||
|
o ZipFile and ZipArchiveInputStream now support reading entries
|
||
|
compressed using the SHRINKING method. Thanks to Damjan Jovanovic.
|
||
|
o GzipCompressorOutputStream now supports setting the compression
|
||
|
level and the header metadata (filename, comment, modification time,
|
||
|
operating system and extra flags)
|
||
|
Issue: COMPRESS-250. Thanks to Emmanuel Bourg.
|
||
|
o ZipFile and ZipArchiveInputStream now support reading entries
|
||
|
compressed using the IMPLODE method.
|
||
|
Issue: COMPRESS-115. Thanks to Emmanuel Bourg.
|
||
|
o ZipFile and the 7z file classes now implement Closeable and can be
|
||
|
used in try-with-resources constructs.
|
||
|
|
||
|
Fixed Bugs:
|
||
|
o SevenZOutputFile#closeArchiveEntry throws an exception when using
|
||
|
LZMA2 compression on Java8. Issue: COMPRESS-241.
|
||
|
o 7z reading of big 64bit values could be wrong.
|
||
|
Issue: COMPRESS-244. Thanks to Nico Kruber.
|
||
|
o TarArchiveInputStream could fail to read an archive completely.
|
||
|
Issue: COMPRESS-245.
|
||
|
o The time-setters in X5455_ExtendedTimestamp now set the
|
||
|
corresponding flags explicitly - i.e. they set the bit if the valus
|
||
|
is not-null and reset it otherwise. This may cause
|
||
|
incompatibilities if you use setFlags to unset a bit and later set
|
||
|
the time to a non-null value - the flag will now be set.
|
||
|
Issue: COMPRESS-242.
|
||
|
o SevenZOutputFile would create invalid archives if more than six
|
||
|
empty files or directories were included. Issue: COMPRESS-252.
|
||
|
|
||
|
Release 1.6
|
||
|
-----------
|
||
|
|
||
|
Version 1.6 introduces changes to the internal API of the tar package that
|
||
|
break backwards compatibility in the following rare cases. This version
|
||
|
removes the package private TarBuffer class along with the protected "buffer"
|
||
|
members in TarArchiveInputStream and TarArchiveOutputStream. This change will
|
||
|
only affect you if you have created a subclass of one of the stream classes
|
||
|
and accessed the buffer member or directly used the TarBuffer class.
|
||
|
|
||
|
Changes in this version include:
|
||
|
|
||
|
New features:
|
||
|
o Added support for 7z archives. Most compression algorithms
|
||
|
can be read and written, LZMA and encryption are only
|
||
|
supported when reading. Issue: COMPRESS-54. Thanks to Damjan Jovanovic.
|
||
|
o Added read-only support for ARJ archives that don't use
|
||
|
compression. Issue: COMPRESS-226. Thanks to Damjan Jovanovic.
|
||
|
o DumpArchiveInputStream now supports an encoding parameter that
|
||
|
can be used to specify the encoding of file names.
|
||
|
o The CPIO streams now support an encoding parameter that can be
|
||
|
used to specify the encoding of file names.
|
||
|
o Read-only support for LZMA standalone compression has been added.
|
||
|
Issue: COMPRESS-111.
|
||
|
|
||
|
Fixed Bugs:
|
||
|
o TarBuffer.tryToConsumeSecondEOFRecord could throw a
|
||
|
NullPointerException Issue: COMPRESS-223. Thanks to Jeremy Gustie.
|
||
|
o Parsing of zip64 extra fields has become more lenient in order
|
||
|
to be able to read archives created by DotNetZip and maybe
|
||
|
other archivers as well. Issue: COMPRESS-228.
|
||
|
o TAR will now properly read the names of symbolic links with
|
||
|
long names that use the GNU variant to specify the long file
|
||
|
name. Issue: COMPRESS-229. Thanks to Christoph Gysin.
|
||
|
o ZipFile#getInputStream could return null if the archive
|
||
|
contained duplicate entries.
|
||
|
The class now also provides two new methods to obtain all
|
||
|
entries of a given name rather than just the first one.
|
||
|
Issue: COMPRESS-227.
|
||
|
o CpioArchiveInputStream failed to read archives created by
|
||
|
Redline RPM. Issue: COMPRESS-236. Thanks to Andrew Duffy.
|
||
|
o TarArchiveOutputStream now properly handles link names that
|
||
|
are too long to fit into a traditional TAR header. Issue:
|
||
|
COMPRESS-237. Thanks to Emmanuel Bourg.
|
||
|
o The auto-detecting create*InputStream methods of Archive and
|
||
|
CompressorStreamFactory could fail to detect the format of
|
||
|
blocking input streams. Issue: COMPRESS-239.
|
||
|
|
||
|
Changes:
|
||
|
o Readabilty patch to TarArchiveInputStream. Issue:
|
||
|
COMPRESS-232. Thanks to BELUGA BEHR.
|
||
|
o Performance improvements to TarArchiveInputStream, in
|
||
|
particular to the skip method. Issue: COMPRESS-234. Thanks to
|
||
|
BELUGA BEHR.
|
||
|
|
||
|
Release 1.5
|
||
|
-----------
|
||
|
|
||
|
New features:
|
||
|
|
||
|
o CompressorStreamFactory has an option to create decompressing
|
||
|
streams that decompress the full input for formats that support
|
||
|
multiple concatenated streams.
|
||
|
Issue: COMPRESS-220.
|
||
|
|
||
|
Fixed Bugs:
|
||
|
|
||
|
o Typo in CompressorStreamFactory Javadoc
|
||
|
Issue: COMPRESS-218.
|
||
|
Thanks to Gili.
|
||
|
o ArchiveStreamFactory's tar stream detection created false positives
|
||
|
for AIFF files.
|
||
|
Issue: COMPRESS-191.
|
||
|
Thanks to Jukka Zitting.
|
||
|
o XZ for Java didn't provide an OSGi bundle. Compress' dependency on
|
||
|
it has now been marked optional so Compress itself can still be used
|
||
|
in an OSGi context.
|
||
|
Issue: COMPRESS-199.
|
||
|
Thanks to Jukka Zitting.
|
||
|
o When specifying the encoding explicitly TarArchiveOutputStream would
|
||
|
write unreadable names in GNU mode or even cause errors in POSIX
|
||
|
mode for file names longer than 66 characters.
|
||
|
Issue: COMPRESS-200.
|
||
|
Thanks to Christian Schlichtherle.
|
||
|
o Writing TAR PAX headers failed if the generated entry name ended
|
||
|
with a "/".
|
||
|
Issue: COMPRESS-203.
|
||
|
o ZipArchiveInputStream sometimes failed to provide input to the
|
||
|
Inflater when it needed it, leading to reads returning 0.
|
||
|
Issue: COMPRESS-189.
|
||
|
Thanks to Daniel Lowe.
|
||
|
o TarArchiveInputStream ignored the encoding for GNU long name
|
||
|
entries.
|
||
|
Issue: COMPRESS-212.
|
||
|
o TarArchiveInputStream could leave the second EOF record inside the
|
||
|
stream it had just finished reading.
|
||
|
Issue: COMPRESS-206.
|
||
|
Thanks to Peter De Maeyer.
|
||
|
o DumpArchiveInputStream no longer implicitly closes the original
|
||
|
input stream when it reaches the end of the archive.
|
||
|
o ZipArchiveInputStream now consumes the remainder of the archive when
|
||
|
getNextZipEntry returns null.
|
||
|
o Unit tests could fail if the source tree was checked out to a
|
||
|
directory tree containign spaces.
|
||
|
Issue: COMPRESS-205.
|
||
|
Thanks to Daniel Lowe.
|
||
|
o Fixed a potential ArrayIndexOutOfBoundsException when reading STORED
|
||
|
entries from ZipArchiveInputStream.
|
||
|
Issue: COMPRESS-219.
|
||
|
o CompressorStreamFactory can now be used without XZ for Java being
|
||
|
available.
|
||
|
Issue: COMPRESS-221.
|
||
|
|
||
|
Changes:
|
||
|
|
||
|
o Improved exception message if a zip archive cannot be read because
|
||
|
of an unsupported compression method.
|
||
|
Issue: COMPRESS-188.
|
||
|
Thanks to Harald Kuhn.
|
||
|
o ArchiveStreamFactory has a setting for file name encoding that sets
|
||
|
up encoding for ZIP and TAR streams.
|
||
|
Issue: COMPRESS-192.
|
||
|
Thanks to Jukka Zitting.
|
||
|
o TarArchiveEntry now has a method to verify its checksum.
|
||
|
Issue: COMPRESS-191.
|
||
|
Thanks to Jukka Zitting.
|
||
|
o Split/spanned ZIP archives are now properly detected by
|
||
|
ArchiveStreamFactory but will cause an
|
||
|
UnsupportedZipFeatureException when read.
|
||
|
o ZipArchiveInputStream now reads archives that start with a "PK00"
|
||
|
signature. Archives with this signatures are created when the
|
||
|
archiver was willing to split the archive but in the end only needed
|
||
|
a single segment - so didn't split anything.
|
||
|
Issue: COMPRESS-208.
|
||
|
o TarArchiveEntry has a new constructor that allows setting linkFlag
|
||
|
and preserveLeadingSlashes at the same time.
|
||
|
Issue: COMPRESS-201.
|
||
|
o ChangeSetPerformer has a new perform overload that uses a ZipFile
|
||
|
instance as input.
|
||
|
Issue: COMPRESS-159.
|
||
|
o Garbage collection pressure has been reduced by reusing temporary
|
||
|
byte arrays in classes.
|
||
|
Issue: COMPRESS-172.
|
||
|
Thanks to Thomas Mair.
|
||
|
o Can now handle zip extra field 0x5455 - Extended Timestamp.
|
||
|
Issue: COMPRESS-210.
|
||
|
Thanks to Julius Davies.
|
||
|
o handle zip extra field 0x7875 - Info Zip New Unix Extra Field.
|
||
|
Issue: COMPRESS-211.
|
||
|
Thanks to Julius Davies.
|
||
|
o ZipShort, ZipLong, ZipEightByteInteger should implement Serializable
|
||
|
Issue: COMPRESS-213.
|
||
|
Thanks to Julius Davies.
|
||
|
o better support for unix symlinks in ZipFile entries.
|
||
|
Issue: COMPRESS-214.
|
||
|
Thanks to Julius Davies.
|
||
|
o ZipFile's initialization has been improved for non-Zip64 archives.
|
||
|
Issue: COMPRESS-215.
|
||
|
Thanks to Robin Power.
|
||
|
o Updated XZ for Java dependency to 1.2 as this version provides
|
||
|
proper OSGi manifest attributes.
|
||
|
|
||
|
Release 1.4.1
|
||
|
-------------
|
||
|
|
||
|
This is a security bugfix release, see
|
||
|
https://commons.apache.org/proper/commons-compress/security.html#Fixed_in_Apache_Commons_Compress_1.4.1
|
||
|
|
||
|
Fixed Bugs:
|
||
|
|
||
|
o Ported libbzip2's fallback sort algorithm to
|
||
|
BZip2CompressorOutputStream to speed up compression in certain
|
||
|
edge cases.
|
||
|
|
||
|
Release 1.4
|
||
|
-----------
|
||
|
|
||
|
New features:
|
||
|
o COMPRESS-156: Support for the XZ format has been added.
|
||
|
|
||
|
Fixed Bugs:
|
||
|
o COMPRESS-183: The tar package now allows the encoding of file names to be
|
||
|
specified and can optionally use PAX extension headers to
|
||
|
write non-ASCII file names.
|
||
|
The stream classes now write (or expect to read) archives that
|
||
|
use the platform's native encoding for file names. Apache
|
||
|
Commons Compress 1.3 used to strip everything but the lower
|
||
|
eight bits of each character which effectively only worked for
|
||
|
ASCII and ISO-8859-1 file names.
|
||
|
This new default behavior is a breaking change.
|
||
|
o COMPRESS-184: TarArchiveInputStream failed to parse PAX headers that
|
||
|
contained non-ASCII characters.
|
||
|
o COMPRESS-178: TarArchiveInputStream throws IllegalArgumentException instead of IOException
|
||
|
o COMPRESS-179: TarUtils.formatLongOctalOrBinaryBytes() assumes the field will be 12 bytes long
|
||
|
o COMPRESS-175: GNU Tar sometimes uses binary encoding for UID and GID
|
||
|
o COMPRESS-171: ArchiveStreamFactory.createArchiveInputStream would claim
|
||
|
short text files were TAR archives.
|
||
|
o COMPRESS-164: ZipFile didn't work properly for archives using unicode extra
|
||
|
fields rather than UTF-8 filenames and the EFS-Flag.
|
||
|
o COMPRESS-169: For corrupt archives ZipFile would throw a RuntimeException in
|
||
|
some cases and an IOException in others. It will now
|
||
|
consistently throw an IOException.
|
||
|
|
||
|
Changes:
|
||
|
o COMPRESS-182: The tar package can now write archives that use star/GNU/BSD
|
||
|
extensions or use the POSIX/PAX variant to store numeric
|
||
|
values that don't fit into the traditional header fields.
|
||
|
o COMPRESS-181: Added a workaround for a Bug some tar implementations that add
|
||
|
a NUL byte as first byte in numeric header fields.
|
||
|
o COMPRESS-176: Added a workaround for a Bug in WinZIP which uses backslashes
|
||
|
as path separators in Unicode Extra Fields.
|
||
|
o COMPRESS-131: ArrayOutOfBounds while decompressing bz2. Added test case - code already seems to have been fixed.
|
||
|
o COMPRESS-146: BZip2CompressorInputStream now optionally supports reading of
|
||
|
concatenated .bz2 files.
|
||
|
o COMPRESS-154: GZipCompressorInputStream now optionally supports reading of
|
||
|
concatenated .gz files.
|
||
|
o COMPRESS-16: The tar package can now read archives that use star/GNU/BSD
|
||
|
extensions for files that are longer than 8 GByte as well as
|
||
|
archives that use the POSIX/PAX variant.
|
||
|
o COMPRESS-165: The tar package can now write archives that use star/GNU/BSD
|
||
|
extensions for files that are longer than 8 GByte as well as
|
||
|
archives that use the POSIX/PAX variant.
|
||
|
o COMPRESS-166: The tar package can now use the POSIX/PAX variant for writing
|
||
|
entries with names longer than 100 characters.
|
||
|
|
||
|
Release 1.3
|
||
|
-----------
|
||
|
|
||
|
Commons Compress 1.3 is the first version to require Java5 at runtime.
|
||
|
|
||
|
Changes in this version include:
|
||
|
|
||
|
New features:
|
||
|
o Support for the Pack200 format has been added. Issue: COMPRESS-142.
|
||
|
o Read-only support for the format used by the Unix dump(8) tool
|
||
|
has been added. Issue: COMPRESS-132.
|
||
|
|
||
|
Fixed Bugs:
|
||
|
o BZip2CompressorInputStream's getBytesRead method always
|
||
|
returned 0.
|
||
|
o ZipArchiveInputStream and ZipArchiveOutputStream could leak
|
||
|
resources on some JDKs. Issue: COMPRESS-152.
|
||
|
o TarArchiveOutputStream's getBytesWritten method didn't count
|
||
|
correctly. Issue: COMPRESS-160.
|
||
|
|
||
|
Changes:
|
||
|
o The ZIP package now supports Zip64 extensions. Issue: COMPRESS-36.
|
||
|
o The AR package now supports the BSD dialect of storing file
|
||
|
names longer than 16 chars (both reading and writing).
|
||
|
Issue: COMPRESS-144.
|
||
|
|
||
|
Release 1.2
|
||
|
-----------
|
||
|
|
||
|
New features:
|
||
|
o COMPRESS-123: ZipArchiveEntry has a new method getRawName that provides the
|
||
|
original bytes that made up the name. This may allow user
|
||
|
code to detect the encoding.
|
||
|
o COMPRESS-122: TarArchiveEntry provides access to the flags that determine
|
||
|
whether it is an archived symbolic link, pipe or other
|
||
|
"uncommon" file system object.
|
||
|
|
||
|
Fixed Bugs:
|
||
|
o COMPRESS-129: ZipArchiveInputStream could fail with a "Truncated ZIP" error
|
||
|
message for entries between 2 GByte and 4 GByte in size.
|
||
|
o COMPRESS-145: TarArchiveInputStream now detects sparse entries using the
|
||
|
oldgnu format and properly reports it cannot extract their
|
||
|
contents.
|
||
|
o COMPRESS-130: The Javadoc for ZipArchiveInputStream#skip now matches the
|
||
|
implementation, the code has been made more defensive.
|
||
|
o COMPRESS-140: ArArchiveInputStream fails if entries contain only blanks for
|
||
|
userId or groupId. Thanks to Trejkaz.
|
||
|
o COMPRESS-139: ZipFile may leak resources on some JDKs.
|
||
|
o COMPRESS-125: BZip2CompressorInputStream throws IOException if
|
||
|
underlying stream returns available() == 0.
|
||
|
Removed the check.
|
||
|
o COMPRESS-127: Calling close() on inputStream returned by
|
||
|
CompressorStreamFactory.createCompressorInputStream()
|
||
|
does not close the underlying input stream.
|
||
|
o COMPRESS-119: TarArchiveOutputStream#finish now writes all buffered
|
||
|
data to the stream
|
||
|
|
||
|
Changes:
|
||
|
o ZipFile now implements finalize which closes the underlying
|
||
|
file.
|
||
|
o COMPRESS-117: Certain tar files not recognised by
|
||
|
ArchiveStreamFactory.
|
||
|
|
||
|
Release 1.1
|
||
|
-----------
|
||
|
|
||
|
New features:
|
||
|
o COMPRESS-108: Command-line interface to list archive contents.
|
||
|
Usage: java -jar commons-compress-n.m.jar archive-name [zip|tar|etc]
|
||
|
o COMPRESS-109: Tar implementation does not support Pax headers
|
||
|
Added support for reading pax headers.
|
||
|
Note: does not support global pax headers
|
||
|
o COMPRESS-103: ZipArchiveInputStream can optionally extract data that used
|
||
|
the STORED compression method and a data descriptor.
|
||
|
Doing so in a stream is not safe in general, so you have to
|
||
|
explicitly enable the feature. By default the stream will
|
||
|
throw an exception if it encounters such an entry.
|
||
|
o COMPRESS-98: The ZIP classes will throw specialized exceptions if any
|
||
|
attempt is made to read or write data that uses zip features
|
||
|
not supported (yet).
|
||
|
o COMPRESS-99: ZipFile#getEntries returns entries in a predictable order -
|
||
|
the order they appear inside the central directory.
|
||
|
A new method getEntriesInPhysicalOrder returns entries in
|
||
|
order of the entry data, i.e. the order ZipArchiveInputStream
|
||
|
would see.
|
||
|
o The Archive*Stream and ZipFile classes now have
|
||
|
can(Read|Write)EntryData methods that can be used to check
|
||
|
whether a given entry's data can be read/written.
|
||
|
The method currently returns false for ZIP archives if an
|
||
|
entry uses an unsupported compression method or encryption.
|
||
|
o COMPRESS-89: The ZIP classes now detect encrypted entries.
|
||
|
o COMPRESS-97: Added autodetection of compression format to
|
||
|
CompressorStreamFactory.
|
||
|
o COMPRESS-95: Improve ExceptionMessages in ArchiveStreamFactory Thanks to Joerg Bellmann.
|
||
|
o A new constructor of TarArchiveEntry can create entries with
|
||
|
names that start with slashes - the default is to strip
|
||
|
leading slashes in order to create relative path names.
|
||
|
o ArchiveEntry now has a getLastModifiedDate method.
|
||
|
o COMPRESS-78: Add a BZip2Utils class modelled after GZipUtils Thanks to Jukka Zitting.
|
||
|
|
||
|
Fixed Bugs:
|
||
|
o COMPRESS-72: Move acknowledgements from NOTICE to README
|
||
|
o COMPRESS-113: TarArchiveEntry.parseTarHeader() includes the trailing space/NUL when parsing the octal size
|
||
|
o COMPRESS-118: TarUtils.parseName does not properly handle characters outside the range 0-127
|
||
|
o COMPRESS-107: ArchiveStreamFactory does not recognise tar files created by Ant
|
||
|
o COMPRESS-110: Support "ustar" prefix field, which is used when file paths are longer
|
||
|
than 100 characters.
|
||
|
o COMPRESS-100: ZipArchiveInputStream will throw an exception if it detects an
|
||
|
entry that uses a data descriptor for a STORED entry since it
|
||
|
cannot reliably find the end of data for this "compression"
|
||
|
method.
|
||
|
o COMPRESS-101: ZipArchiveInputStream should now properly read archives that
|
||
|
use data descriptors but without the "unofficial" signature.
|
||
|
o COMPRESS-74: ZipArchiveInputStream failed to update the number of bytes
|
||
|
read properly.
|
||
|
o ArchiveInputStream has a new method getBytesRead that should
|
||
|
be preferred over getCount since the later may truncate the
|
||
|
number of bytes read for big archives.
|
||
|
o COMPRESS-85: The cpio archives created by CpioArchiveOutputStream couldn't
|
||
|
be read by many existing native implementations because the
|
||
|
archives contained multiple entries with the same inode/device
|
||
|
combinations and weren't padded to a blocksize of 512 bytes.
|
||
|
o COMPRESS-73: ZipArchiveEntry, ZipFile and ZipArchiveInputStream are now
|
||
|
more lenient when parsing extra fields.
|
||
|
o COMPRESS-82: cpio is terribly slow.
|
||
|
Documented that buffered streams are needed for performance
|
||
|
o Improved exception message if the extra field data in ZIP
|
||
|
archives cannot be parsed.
|
||
|
o COMPRESS-17: Tar format unspecified - current support documented.
|
||
|
o COMPRESS-94: ZipArchiveEntry's equals method was broken for entries created
|
||
|
with the String-arg constructor. This lead to broken ZIP
|
||
|
archives if two different entries had the same hash code. Thanks to Anon Devs.
|
||
|
o COMPRESS-87: ZipArchiveInputStream could repeatedly return 0 on read() when
|
||
|
the archive was truncated. Thanks to Antoni Mylka.
|
||
|
o COMPRESS-86: Tar archive entries holding the file name for names longer
|
||
|
than 100 characters in GNU longfile mode didn't properly
|
||
|
specify they'd be using the "oldgnu" extension.
|
||
|
o COMPRESS-83: Delegate all read and write methods in GZip stream in order to
|
||
|
speed up operations.
|
||
|
o The ar and cpio streams now properly read and write last
|
||
|
modified times.
|
||
|
o COMPRESS-81: TarOutputStream can leave garbage at the end of the archive
|
||
|
|
||
|
Changes:
|
||
|
o COMPRESS-112: ArArchiveInputStream does not handle GNU extended filename records (//)
|
||
|
o COMPRESS-105: Document that the name of an ZipArchiveEntry determines whether
|
||
|
an entry is considered a directory or not.
|
||
|
If you don't use the constructor with the File argument the entry's
|
||
|
name must end in a "/" in order for the entry to be known as a directory.
|
||
|
o COMPRESS-79: Move DOS/Java time conversions into Zip utility class.
|
||
|
o COMPRESS-75: ZipArchiveInputStream does not show location in file
|
||
|
where a problem occurred.
|
||
|
|