Apache Commons logo Commons Compress

commons-compress

Release History

Version Date Description
1.9 not released yet Release 1.9
1.8 2014-03-12 Release 1.8
1.7 2014-01-20 Release 1.7
1.6 2013-10-26 Release 1.6
1.5 2013-03-14 Release 1.5
1.4.1 2012-05-23 Release 1.4.1
1.4 2012-04-11 Release 1.4
1.3 2011-11-01 Release 1.3 - API compatible to 1.2 but requires Java5 at runtime
1.2 2011-07-31 Release 1.2 - a bugfix release, the last release expected to be compatible with Java 1.4
1.1 2010-08-13 Release 1.1
1.0 2009-05-21 First Public Release

Release 1.9 - not released yet

Type Changes By
update The dependency on org.tukaani:xz is now marked as optional.
fix The snappy, ar and tar inputstreams might fail to read from a non-buffered stream in certain cases. Fixes COMPRESS-270.
add CompressorStreamFactory can now auto-detect Unix compress (".Z") streams. Fixes COMPRESS-272.

Release 1.8 - 2014-03-12

Type Changes By
fix BZip2CompressorInputStream read fewer bytes than possible from a truncated stream. Fixes COMPRESS-253.
fix SevenZFile failed claiming the dictionary was too large when archives used LZMA compression for headers and content and certain non-default dictionary sizes. Fixes COMPRESS-253.
fix CompressorStreamFactory.createCompressorInputStream with explicit compression did not honor decompressConcatenated Fixes COMPRESS-259.
add GzipCompressorInputStream now provides access to the same metadata that can be provided via GzipParameters when writing a gzip stream. Fixes COMPRESS-260.
fix TarArchiveInputStream will now read archives created by tar implementations that encode big numbers by not adding a trailing NUL. Fixes COMPRESS-262.
fix ZipArchiveInputStream would return NUL bytes for the first 512 bytes of a STORED entry if it was the very first entry of the archive. Fixes COMPRESS-264.
fix When writing PAX/POSIX headers for TAR entries with backslashes or certain non-ASCII characters in their name TarArchiveOutputStream could fail. Fixes COMPRESS-265.
fix 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. Fixes COMPRESS-267.
add SevenZOutputFile now supports chaining multiple compression/encryption/filter methods and passing options to the methods. Fixes COMPRESS-266.
add The (compression) method(s) can now be specified per entry in SevenZOutputFile. Fixes COMPRESS-261.
add SevenZArchiveEntry "knows" which method(s) have been used to write it to the archive. Fixes COMPRESS-258.
add The 7z package now supports the delta filter as method.
add 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. Fixes COMPRESS-257.

Release 1.7 - 2014-01-20

Type Changes By
fix SevenZOutputFile#closeArchiveEntry throws an exception when using LZMA2 compression on Java8. Fixes COMPRESS-241.
add Read-Only support for Snappy compression. Fixes COMPRESS-147. Thanks to BELUGA BEHR.
fix 7z reading of big 64bit values could be wrong. Fixes COMPRESS-244. Thanks to Nico Kruber.
add Read-Only support for .Z compressed files. Fixes COMPRESS-243. Thanks to Damjan Jovanovic.
add ZipFile and ZipArchiveInputStream now support reading entries compressed using the SHRINKING method. Thanks to Damjan Jovanovic.
fix TarArchiveInputStream could fail to read an archive completely. Fixes COMPRESS-245.
fix 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. Fixes COMPRESS-242.
add GzipCompressorOutputStream now supports setting the compression level and the header metadata (filename, comment, modification time, operating system and extra flags) Fixes COMPRESS-250. Thanks to Emmanuel Bourg.
add ZipFile and ZipArchiveInputStream now support reading entries compressed using the IMPLODE method. Fixes COMPRESS-115. Thanks to Emmanuel Bourg.
fix SevenZOutputFile would create invalid archives if more than six empty files or directories were included. Fixes COMPRESS-252.
add ZipFile and the 7z file classes now implement Closeable and can be used in try-with-resources constructs.

Release 1.6 - 2013-10-26

Type Changes By
fix TarBuffer.tryToConsumeSecondEOFRecord could throw a NullPointerException Fixes COMPRESS-223. Thanks to Jeremy Gustie.
add Added support for 7z archives. Most compression algorithms can be read and written, LZMA and encryption are only supported when reading. Fixes COMPRESS-54. Thanks to Damjan Jovanovic.
add Added read-only support for ARJ archives that don't use compression. Fixes COMPRESS-226. Thanks to Damjan Jovanovic.
fix 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. Fixes COMPRESS-228.
fix TAR will now properly read the names of symbolic links with long names that use the GNU variant to specify the long file name. Fixes COMPRESS-229. Thanks to Christoph Gysin.
fix 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. Fixes COMPRESS-227.
update Readabilty patch to TarArchiveInputStream. Fixes COMPRESS-232. Thanks to BELUGA BEHR.
update Performance improvements to TarArchiveInputStream, in particular to the skip method. Fixes COMPRESS-234. Thanks to BELUGA BEHR.
fix CpioArchiveInputStream failed to read archives created by Redline RPM. Fixes COMPRESS-236. Thanks to Andrew Duffy.
fix TarArchiveOutputStream now properly handles link names that are too long to fit into a traditional TAR header. Fixes COMPRESS-237. Thanks to Emmanuel Bourg.
add DumpArchiveInputStream now supports an encoding parameter that can be used to specify the encoding of file names.
add The CPIO streams now support an encoding parameter that can be used to specify the encoding of file names.
add Read-only support for LZMA standalone compression has been added. Fixes COMPRESS-111.
fix The auto-detecting create*InputStream methods of Archive and CompressorStreamFactory could fail to detect the format of blocking input streams. Fixes COMPRESS-239.
fix ZipEncodingHelper.isUTF8(String) does not check all UTF-8 aliases. Fixes COMPRESS-240. Thanks to Gary Gregory.

Release 1.5 - 2013-03-14

Type Changes By
fix Typo in CompressorStreamFactory Javadoc Fixes COMPRESS-218. Thanks to Gili.
update Improved exception message if a zip archive cannot be read because of an unsupported compression method. Fixes COMPRESS-188. Thanks to Harald Kuhn.
update ArchiveStreamFactory has a setting for file name encoding that sets up encoding for ZIP and TAR streams. Fixes COMPRESS-192. Thanks to Jukka Zitting.
fix ArchiveStreamFactory's tar stream detection created false positives for AIFF files. Fixes COMPRESS-191. Thanks to Jukka Zitting.
update TarArchiveEntry now has a method to verify its checksum. Fixes COMPRESS-191. Thanks to Jukka Zitting.
fix 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. Fixes COMPRESS-199. Thanks to Jukka Zitting.
fix 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. Fixes COMPRESS-200. Thanks to Christian Schlichtherle.
fix Writing TAR PAX headers failed if the generated entry name ended with a "/". Fixes COMPRESS-203.
fix ZipArchiveInputStream sometimes failed to provide input to the Inflater when it needed it, leading to reads returning 0. Fixes COMPRESS-189. Thanks to Daniel Lowe.
update Split/spanned ZIP archives are now properly detected by ArchiveStreamFactory but will cause an UnsupportedZipFeatureException when read.
update 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. Fixes COMPRESS-208.
update TarArchiveEntry has a new constructor that allows setting linkFlag and preserveLeadingSlashes at the same time. Fixes COMPRESS-201.
update ChangeSetPerformer has a new perform overload that uses a ZipFile instance as input. Fixes COMPRESS-159.
fix TarArchiveInputStream ignored the encoding for GNU long name entries. Fixes COMPRESS-212.
update Garbage collection pressure has been reduced by reusing temporary byte arrays in classes. Fixes COMPRESS-172. Thanks to Thomas Mair.
update Can now handle zip extra field 0x5455 - Extended Timestamp. Fixes COMPRESS-210. Thanks to Julius Davies.
update handle zip extra field 0x7875 - Info Zip New Unix Extra Field. Fixes COMPRESS-211. Thanks to Julius Davies.
update ZipShort, ZipLong, ZipEightByteInteger should implement Serializable Fixes COMPRESS-213. Thanks to Julius Davies.
update better support for unix symlinks in ZipFile entries Fixes COMPRESS-214. Thanks to Julius Davies.
update ZipFile's initialization has been improved for non-Zip64 archives. Fixes COMPRESS-215. Thanks to Robin Power.
fix TarArchiveInputStream could leave the second EOF record inside the stream it had just finished reading. Fixes COMPRESS-206. Thanks to Peter De Maeyer.
fix DumpArchiveInputStream no longer implicitly closes the original input stream when it reaches the end of the archive.
fix ZipArchiveInputStream now consumes the remainder of the archive when getNextZipEntry returns null.
fix Unit tests could fail if the source tree was checked out to a directory tree containign spaces. Fixes COMPRESS-205. Thanks to Daniel Lowe.
update Updated XZ for Java dependency to 1.2 as this version provides proper OSGi manifest attributes.
fix Fixed a potential ArrayIndexOutOfBoundsException when reading STORED entries from ZipArchiveInputStream. Fixes COMPRESS-219.
fix CompressorStreamFactory can now be used without XZ for Java being available. Fixes COMPRESS-221.
add CompressorStreamFactory has an option to create decompressing streams that decompress the full input for formats that support multiple concatenated streams. Fixes COMPRESS-220.

Release 1.4.1 - 2012-05-23

Type Changes By
fix Ported libbzip2's fallback sort algorithm to BZip2CompressorOutputStream to speed up compression in certain edge cases. Using specially crafted inputs this can be used as a denial of service attack. See the security reports page for details.

Release 1.4 - 2012-04-11

Type Changes By
fix 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. Fixes COMPRESS-183.
fix TarArchiveInputStream failed to parse PAX headers that contained non-ASCII characters. Fixes COMPRESS-184.
update 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. Fixes COMPRESS-182.
update Added a workaround for a Bug some tar implementations that add a NUL byte as first byte in numeric header fields. Fixes COMPRESS-181.
update Added a workaround for a Bug in WinZIP which uses backslashes as path separators in Unicode Extra Fields. Fixes COMPRESS-176.
update ArrayOutOfBounds while decompressing bz2. Added test case - code already seems to have been fixed. Fixes COMPRESS-131.
fix TarArchiveInputStream throws IllegalArgumentException instead of IOException Fixes COMPRESS-178.
fix TarUtils.formatLongOctalOrBinaryBytes() assumes the field will be 12 bytes long Fixes COMPRESS-179.
fix GNU Tar sometimes uses binary encoding for UID and GID Fixes COMPRESS-175.
fix ArchiveStreamFactory.createArchiveInputStream would claim short text files were TAR archives. Fixes COMPRESS-171.
add Support for the XZ format has been added. Fixes COMPRESS-156.
update BZip2CompressorInputStream now optionally supports reading of concatenated .bz2 files. Fixes COMPRESS-146.
update GZipCompressorInputStream now optionally supports reading of concatenated .gz files. Fixes COMPRESS-154.
fix ZipFile didn't work properly for archives using unicode extra fields rather than UTF-8 filenames and the EFS-Flag. Fixes COMPRESS-164.
update 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. Fixes COMPRESS-16.
update 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. Fixes COMPRESS-165.
update The tar package can now use the POSIX/PAX variant for writing entries with names longer than 100 characters. Fixes COMPRESS-166.
fix For corrupt archives ZipFile would throw a RuntimeException in some cases and an IOException in others. It will now consistently throw an IOException. Fixes COMPRESS-169.

Release 1.3 - 2011-11-01

Type Changes By
add Support for the Pack200 format has been added. Fixes COMPRESS-142.
add Read-only support for the format used by the Unix dump(8) tool has been added. Fixes COMPRESS-132.
update The ZIP package now supports Zip64 extensions. Fixes COMPRESS-36.
update The AR package now supports the BSD dialect of storing file names longer than 16 chars (both reading and writing). Fixes COMPRESS-144.
fix BZip2CompressorInputStream's getBytesRead method always returned 0.
fix ZipArchiveInputStream and ZipArchiveOutputStream could leak resources on some JDKs. Fixes COMPRESS-152.
fix TarArchiveOutputStream's getBytesWritten method didn't count correctly. Fixes COMPRESS-160.

Release 1.2 - 2011-07-31

Type Changes By
fix ZipArchiveInputStream could fail with a "Truncated ZIP" error message for entries between 2 GByte and 4 GByte in size. Fixes COMPRESS-129.
fix TarArchiveInputStream now detects sparse entries using the oldgnu format and properly reports it cannot extract their contents. Fixes COMPRESS-145.
add 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. Fixes COMPRESS-123.
fix The Javadoc for ZipArchiveInputStream#skip now matches the implementation, the code has been made more defensive. Fixes COMPRESS-130.
fix ArArchiveInputStream fails if entries contain only blanks for userId or groupId. Fixes COMPRESS-140. Thanks to Trejkaz.
fix ZipFile may leak resources on some JDKs. Fixes COMPRESS-139.
update ZipFile now implements finalize which closes the underlying file.
update Certain tar files not recognised by ArchiveStreamFactory. Fixes COMPRESS-117.
fix BZip2CompressorInputStream throws IOException if underlying stream returns available() == 0. Removed the check. Fixes COMPRESS-125.
fix Calling close() on inputStream returned by CompressorStreamFactory.createCompressorInputStream() does not close the underlying input stream. Fixes COMPRESS-127.
add TarArchiveEntry provides access to the flags that determine whether it is an archived symbolic link, pipe or other "uncommon" file system object. Fixes COMPRESS-122.
fix TarArchiveOutputStream#finish now writes all buffered data to the stream Fixes COMPRESS-119.

Release 1.1 - 2010-08-13

Type Changes By
fix Move acknowledgements from NOTICE to README Fixes COMPRESS-72.
fix TarArchiveEntry.parseTarHeader() includes the trailing space/NUL when parsing the octal size Fixes COMPRESS-113.
add Command-line interface to list archive contents. Usage: java -jar commons-compress-n.m.jar archive-name [zip|tar|etc] Fixes COMPRESS-108.
fix TarUtils.parseName does not properly handle characters outside the range 0-127 Fixes COMPRESS-118.
update ArArchiveInputStream does not handle GNU extended filename records (//) Fixes COMPRESS-112.
add Tar implementation does not support Pax headers Added support for reading pax headers. Note: does not support global pax headers Fixes COMPRESS-109.
fix ArchiveStreamFactory does not recognise tar files created by Ant Fixes COMPRESS-107.
fix Support "ustar" prefix field, which is used when file paths are longer than 100 characters. Fixes COMPRESS-110.
update 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. Fixes COMPRESS-105.
add 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. Fixes COMPRESS-103.
fix 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. Fixes COMPRESS-100.
fix ZipArchiveInputStream should now properly read archives that use data descriptors but without the "unofficial" signature. Fixes COMPRESS-101.
add The ZIP classes will throw specialized exceptions if any attempt is made to read or write data that uses zip features not supported (yet). Fixes COMPRESS-98.
add 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. Fixes COMPRESS-99.
add 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.
add The ZIP classes now detect encrypted entries. Fixes COMPRESS-89.
update Move DOS/Java time conversions into Zip utility class. Fixes COMPRESS-79.
fix ZipArchiveInputStream failed to update the number of bytes read properly. Fixes COMPRESS-74.
fix 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.
fix 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. Fixes COMPRESS-85.
fix ZipArchiveEntry, ZipFile and ZipArchiveInputStream are now more lenient when parsing extra fields. Fixes COMPRESS-73.
update ZipArchiveInputStream does not show location in file where a problem occurred. Fixes COMPRESS-75.
fix cpio is terribly slow. Documented that buffered streams are needed for performance Fixes COMPRESS-82.
add Added autodetection of compression format to CompressorStreamFactory. Fixes COMPRESS-97.
fix Improved exception message if the extra field data in ZIP archives cannot be parsed.
fix Tar format unspecified - current support documented. Fixes COMPRESS-17.
add Improve ExceptionMessages in ArchiveStreamFactory Fixes COMPRESS-95. Thanks to Joerg Bellmann.
fix 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. Fixes COMPRESS-94. Thanks to Anon Devs.
fix ZipArchiveInputStream could repeatedly return 0 on read() when the archive was truncated. Fixes COMPRESS-87. Thanks to Antoni Mylka.
fix 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. Fixes COMPRESS-86.
add 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.
fix Delegate all read and write methods in GZip stream in order to speed up operations. Fixes COMPRESS-83.
add ArchiveEntry now has a getLastModifiedDate method.
fix The ar and cpio streams now properly read and write last modified times.
fix TarOutputStream can leave garbage at the end of the archive Fixes COMPRESS-81.
add Add a BZip2Utils class modelled after GZipUtils Fixes COMPRESS-78. Thanks to Jukka Zitting.

Release 1.0 - 2009-05-21

Type Changes By
add Initial release all
fix Updating the pom.xml for preparing a move to commons-proper sgoeschl