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

Posted

技术标签:

【中文标题】如何在 Java 中列出压缩的 tar 文件的内容【英文标题】:How to list the contents of a compressed tar file in Java 【发布时间】:2011-03-16 01:50:33 【问题描述】:

而不提取文件?我看过 apache ant api,我可以看到如何提取文件,但我不知道如何列出它们。 tar 文件是 bz2 或 gz。

【问题讨论】:

【参考方案1】:

我建议使用TrueZIP。 真的很好。

TrueZIP 是一个用于虚拟文件系统的框架和一个用于访问存档文件的库,就好像它们只是普通的旧目录一样。

作为一个框架,TrueZIP 提供了接口和类来编写插入到其联合文件系统空间的文件系统驱动程序。

作为一个库,TrueZIP 为存档文件提供了方便的多线程读/写访问,就好像它们只是文件系统路径中的普通旧目录一样。

这是一个出色、快速的库。它有TAR drivers 和can handle *.tar.gz and *.tar.bz2 files。 JavaDocs 清晰而完整,尽管我发现独立的教程不够 - 我必须阅读 JavaDoc 才能使事情正常进行。

...这让我发现了我发现的唯一缺点:可能需要一点时间才能了解 TrueZIP。最初,我在让任何东西工作时都遇到了问题,但过了一会儿它“点击”了,我就没有更多困难了。

【讨论】:

谢谢,我已经尝试过了,它在大多数情况下都可以工作,但是有些 tar 文件似乎会抛出异常或给出不正确的结果。即包含目录作为第一个条目但没有尾部正斜杠的 tar 文件。 链接已失效。 @ImpulseTheFox 感谢您的提醒。我已经修复了链接,但随时欢迎您自己提出修改建议:)【参考方案2】:
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();      

【讨论】:

以上是关于如何在 Java 中列出压缩的 tar 文件的内容的主要内容,如果未能解决你的问题,请参考以下文章

用tar命令对文件中列出的文件进行打包怎么做?

如何列出gz文件的内容而不在python中提取它?

Linux的tar压缩解压缩命令

如何使用 Java 打印 tar.gz 文件的内容?

tar 压缩命令

在LINUX下如何将tar压缩文件解压到指定的目录下