如何用Java解析tar.bz2归档文件中的一些文件

如何用Java解析tar.bz2归档文件中的一些文件,java,tar,Java,Tar,因此,我编写了用于解析单个文件的解析器,但是我可以读取归档文件中的每个文件,而不必实际将归档文件提取到磁盘上吗 // 1st InputStream from your compressed file FileInputStream in = new FileInputStream(tarbz2File); // wrap in a 2nd InputStream that deals with compression BZip2CompressorInputStream bzIn = new

因此,我编写了用于解析单个文件的解析器,但是我可以读取归档文件中的每个文件,而不必实际将归档文件提取到磁盘上吗

// 1st InputStream from your compressed file
FileInputStream in = new FileInputStream(tarbz2File);
// wrap in a 2nd InputStream that deals with compression
BZip2CompressorInputStream bzIn = new BZip2CompressorInputStream(in);
// wrap in a 3rd InputStream that deals with tar
TarArchiveInputStream tarIn = new TarArchiveInputStream(bzIn);
ArchiveEntry entry = null;

while (null != (entry = tarIn.getNextEntry())){
    if (entry.getSize() < 1){
        continue;
    }
    // use your parser here, the tar inputStream deals with the size of the current entry
    parser.parse(tarIn);
}
tarIn.close();
//压缩文件中的第一个输入流
FileInputStream in=新的FileInputStream(tarbz2File);
//包装在处理压缩的第二个输入流中
BZIP2压缩机输入流bzIn=新的BZIP2压缩机输入流(in);
//在处理tar的第三个输入流中封装
TarArchiveInputStream tarIn=新的TarArchiveInputStream(bzIn);
ArchiveEntry条目=空;
while(null!=(entry=tarIn.getnextery()){
if(entry.getSize()<1){
继续;
}
//在这里使用解析器,tar inputStream处理当前条目的大小
parser.parse(tarIn);
}
tarIn.close();

可能与Apache Commons Compress重复,或者除了Apache Commons Compress之外,这里有两个bzip2在Java中的实现:但是我如何处理bz2和tar,这些答案似乎没有解决这个问题?@PaulTaylor您在这里寻找什么样的答案?有用于bzip解码和tarfile解析的库。您说您有自己的解析器,但我们不知道它的确切功能或用作输入的内容。@Kenster我的解析器可以接收输入流,因此我正在寻找一个答案,该答案可以将压缩bzip中tar存档中的每个文件的输入流传递给我的解析器