Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-读取BZ2文件并动态解压缩/解析_Java_Compression_Io - Fatal编程技术网

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

Java-读取BZ2文件并动态解压缩/解析,java,compression,io,Java,Compression,Io,我有一个相当大的BZ2文件,里面有几个文本文件。我是否可以使用Java解压BZ2文件中的某些文件,并动态解压/解析数据?假设一个300mb的BZ2文件包含1GB的文本。理想情况下,我希望我的java程序说读取1MB的BZ2文件,动态解压缩它,对它执行操作,并继续读取BZ2文件以获取更多数据。可能吗 谢谢Ant项目包含一个库。它有一个org.apache.tools.bzip2.CBZip2InputStream类。您可以使用该类动态解压缩bzip2文件-它只是扩展了标准Java类。来自apach

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


谢谢

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

来自apache的commons compress库非常好。这是他们的样本页面:

以下是最新的maven代码片段:

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

此库无法识别我的bzip2格式。Had必须使用commons-compress。注意:可接受的格式为:gzip、bzip2、xz、lzma、Pack200、DEFLATE和Z。如链接所示,正确的格式会自动分配。请注意,bzip2/bz2文件是压缩的单个文件。它们不是可以包含多个文件(或目录)的存档,如zip或其他格式。
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;
}