Apache Commons Compress 1.19 发布了,这主要是一个 bug 修复版本。
新特性
- 现在可以在使用 ZipFile 时跳过对本地文件头的解析,这可能会加速读取存档,但代价是可能会丢失重要信息
- TarArchiveInputStream 有一个新的构造函数 arg lenient,可用于接受某些遭到破坏的存档
- ArjArchiveEntry 和 SevenZArchiveEntry 现在实现 hashCode 和 equals
- 添加了一个 MultiReadOnlySeekableByteChannel 类,可用于连接多卷 7z 存档的各个部分,以便 SevenZFile 可以读取它们
Bug 修复
- ZipArchiveInputStream 可能会忘记在某些情况下压缩级别已更改
- 修复了 ParallelScatterZipCreator#writeTo 中另一个潜在的资源泄漏问题
- 对于某些格式错误的 LZ4 或 Snappy 输入,抛出 IOException 而不是 RuntimeExceptions
- 如果数据描述符未使用 InfoZIP 发明的签名,ZipArchiveInputStream 无法使用数据描述符读取存储的条目
更多详情可查看发布公告。
下载地址:https://commons.apache.org/proper/commons-compress/download_compress.cgi
Commons Compress 用以实现将文件压缩或解压成 tar、zip、bzip2 等格式。
下面代码将文件压缩成 zip 格式:
ArArchiveEntry entry = new ArArchiveEntry(name, size); arOutput.putArchiveEntry(entry); arOutput.write(contentOfEntry); arOutput.closeArchiveEntry();
Zip 文件的解压缩:
ArArchiveEntry entry = (ArArchiveEntry) arInput.getNextEntry(); byte[] content = new byte[entry.getSize()]; LOOP UNTIL entry.getSize() HAS BEEN READ { arInput.read(content, offset, content.length - offset); }