解压缩BZIP2存档

时间:2010-02-24 00:54:50

标签: java api compression bzip2

我可以解压缩zip,gzip和rar文件,但我还需要解压缩bzip2文件以及解压缩它们(.tar)。我没有遇到过一个好的图书馆。

我正在使用Java和Maven,所以理想情况下,我希望将它作为POM中的依赖项包含在内。

您推荐哪些图书馆?

2 个答案:

答案 0 :(得分:36)

我能看到的最佳选择是具有Maven依赖性的Apache Commons Compress

<dependency>
  <groupId>org.apache.commons</groupId>
  <artifactId>commons-compress</artifactId>
  <version>1.0</version>
</dependency>

来自examples

FileInputStream in = new FileInputStream("archive.tar.bz2");
FileOutputStream out = new FileOutputStream("archive.tar");
BZip2CompressorInputStream bzIn = new BZip2CompressorInputStream(in);
final byte[] buffer = new byte[buffersize];
int n = 0;
while (-1 != (n = bzIn.read(buffer))) {
  out.write(buffer, 0, n);
}
out.close();
bzIn.close();

答案 1 :(得分:0)

请不要忘记使用缓冲流获得最高 3倍加速

public void decompressBz2(String inputFile, String outputFile) throws IOException {
    var input = new BZip2CompressorInputStream(new BufferedInputStream(new FileInputStream(inputFile)));
    var output = new FileOutputStream(outputFile);
    try (input; output) {
        IOUtils.copy(input, output);
    }
}

decompressBz2("example.bz2", "example.txt");

使用build.gradle.kts

dependencies {
    ...
    implementation("org.apache.commons:commons-compress:1.20")
}