The Commons Compress team is pleased to announce the commons-compress-1.1 release!
Commons Compress defines an API for working with compression and archive formats. These include: bzip2, gzip and ar, cpio, jar, tar, zip. Source and binary distributions are available for download from the Apache Commons download site: http://commons.apache.org/compress/download_compress.cgi When downloading, please verify signatures using the KEYS file available at the above location when downloading the release. For more information on Apache Commons Compress, visit the Commons Compress home page: http://commons.apache.org/compress/ Changes in this version include: New features: o Command-line interface to list archive contents. Usage: java -jar commons-compress-n.m.jar archive-name [zip|tar|etc] Issue: COMPRESS-108. o Tar implementation does not support Pax headers Added support for reading pax headers. Note: does not support global pax headers Issue: COMPRESS-109. o 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. Issue: COMPRESS-103. o The ZIP classes will throw specialized exceptions if any attempt is made to read or write data that uses zip features not supported (yet). Issue: COMPRESS-98. o 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. Issue: COMPRESS-99. 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 The ZIP classes now detect encrypted entries. Issue: COMPRESS-89. o Added autodetection of compression format to CompressorStreamFactory. Issue: COMPRESS-97. o Improve ExceptionMessages in ArchiveStreamFactory Issue: COMPRESS-95. 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 Add a BZip2Utils class modelled after GZipUtils Issue: COMPRESS-78. Thanks to Jukka Zitting. Fixed Bugs: o Move acknowledgements from NOTICE to README Issue: COMPRESS-72. o TarArchiveEntry.parseTarHeader() includes the trailing space/NUL when parsing the octal size Issue: COMPRESS-113. o TarUtils.parseName does not properly handle characters outside the range 0-127 Issue: COMPRESS-118. o ArchiveStreamFactory does not recognise tar files created by Ant Issue: COMPRESS-107. o Support "ustar" prefix field, which is used when file paths are longer than 100 characters. Issue: COMPRESS-110. o 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. Issue: COMPRESS-100. o ZipArchiveInputStream should now properly read archives that use data descriptors but without the "unofficial" signature. Issue: COMPRESS-101. o ZipArchiveInputStream failed to update the number of bytes read properly. Issue: COMPRESS-74. 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 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. Issue: COMPRESS-85. o ZipArchiveEntry, ZipFile and ZipArchiveInputStream are now more lenient when parsing extra fields. Issue: COMPRESS-73. o cpio is terribly slow. Documented that buffered streams are needed for performance Issue: COMPRESS-82. o Improved exception message if the extra field data in ZIP archives cannot be parsed. o Tar format unspecified - current support documented. Issue: COMPRESS-17. o 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. Issue: COMPRESS-94. Thanks to Anon Devs. o ZipArchiveInputStream could repeatedly return 0 on read() when the archive was truncated. Issue: COMPRESS-87. Thanks to Antoni Mylka. o 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. Issue: COMPRESS-86. o Delegate all read and write methods in GZip stream in order to speed up operations. Issue: COMPRESS-83. o The ar and cpio streams now properly read and write last modified times. o TarOutputStream can leave garbage at the end of the archive Issue: COMPRESS-81. Changes: o ArArchiveInputStream does not handle GNU extended filename records (//) Issue: COMPRESS-112. o 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. Issue: COMPRESS-105. o Move DOS/Java time conversions into Zip utility class. Issue: COMPRESS-79. o ZipArchiveInputStream does not show location in file where a problem occurred. Issue: COMPRESS-75. Have fun! -Commons Compress team