如何在Java中列出压缩的tar文件的内容

4

在Java中,如何列出压缩的tar文件的内容而不解压缩文件?我已经查看了Apache Ant API,我可以看到如何提取文件,但我无法弄清楚如何仅列出它们。这些tar文件是bz2或gz格式。

2个回答

4
我建议使用TrueZIP。它非常好。
TrueZIP是一个虚拟文件系统框架和访问归档文件的库,就像它们只是普通的旧目录一样。作为一个框架,TrueZIP提供了编写文件系统驱动程序的接口和类,这些驱动程序插入到其联合文件系统空间中。作为一个库,TrueZIP提供了方便的多线程读/写访问归档文件的能力,就像它们只是文件系统路径中的普通旧目录一样。
这是一个优秀、快速的库。它有TAR drivers,并且可以处理*.tar.gz*.tar.bz2文件。JavaDocs清晰完整,尽管我发现独立教程不够充分——我必须阅读JavaDoc才能使事情正常工作。

这让我想到唯一的缺点:可能需要一些时间来理解TrueZIP。起初,我遇到了一些问题,无法使其正常工作,但经过一段时间后,我终于理解了并没有遇到更多困难。


谢谢,我已经尝试过了,大部分情况下都可以正常工作,但是有些tar文件似乎会抛出异常或给出不正确的结果。特别是包含一个目录作为第一个条目,但没有尾随正斜杠的tar文件。 - Wayne
链接已失效。 - Impulse The Fox
@ImpulseTheFox 感谢提醒。我已经修复了链接,但你随时可以建议自己的编辑 :) - Matt Ball

1
TarArchiveInputStream tin = new TarArchiveInputStream(new FileInputStream(tempFile));
ArchiveEntry entry = tin.getNextEntry();
while (entry != null) {
  System.out.println("File Name " + entry.getName());//List file name
  entry = tin.getNextEntry();      
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接