Java - 读取 BZ2 文件并动态解压缩/解析

2022-09-03 00:20:34

我有一个相当大的BZ2文件,其中包含几个文本文件。我是否可以使用Java来解压缩BZ2文件中的某些文件并动态解压缩/解析数据?假设一个 300mb 的 BZ2 文件包含 1 GB 的文本。理想情况下,我希望我的java程序说读取1 mb的BZ2文件,动态解压缩它,对其采取行动并继续读取BZ2文件以获取更多数据。这可能吗?

谢谢


答案 1

来自apache的commons-compress库非常好。这是他们的示例页面:http://commons.apache.org/proper/commons-compress/examples.html

以下是最新的 maven 代码段:

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

这是我的util方法:

public static BufferedReader getBufferedReaderForCompressedFile(String fileIn) throws FileNotFoundException, CompressorException {
    FileInputStream fin = new FileInputStream(fileIn);
    BufferedInputStream bis = new BufferedInputStream(fin);
    CompressorInputStream input = new CompressorStreamFactory().createCompressorInputStream(bis);
    BufferedReader br2 = new BufferedReader(new InputStreamReader(input));
    return br2;
}

答案 2

Ant 项目包含一个 bzip2 库。它有一个类。您可以使用此类动态解压缩 bzip2 文件 - 它只是扩展了标准的 Java InputStream 类。org.apache.tools.bzip2.CBZip2InputStream


推荐