在 Java 中提取存档文件 [关闭]

Posted

技术标签:

【中文标题】在 Java 中提取存档文件 [关闭]【英文标题】:Extracting Archive Files in Java [closed] 【发布时间】:2013-04-04 12:35:05 【问题描述】:

我正在寻找一个库来提取存档文件。例如,zips、rars、tars、wars、...

到目前为止,我的应用程序仅支持 .ZIP 和 .RAR,但我想增加对其他几种存档类型的支持。不仅如此,我还希望库“检测”存档文件,即使我给它们另一个扩展名或根本没有扩展名。

基本上,我正在寻找某种可以传递文件和路径的接口,然后检查文件是否为存档文件,如果不是则返回错误,并将文件提取到指定路径如果是。我猜不同的文件类型有不同的实现,但如果库检测到这一点并自动将其传递给正确的实现,这将非常有用。

【问题讨论】:

【参考方案1】:

您可以使用Apache Commons Compress。

这个库也被伟大的Apache Tika 使用,它可以用来检测不同的文件格式,也没有扩展名(但对于你的任务来说,巨大的 Apache Tika 可能是一个过度杀伤力)。

【讨论】:

在这些档案中存在一个复杂的目录结构。我将如何将包含此结构及其文件的 ArchiveInputStream 写入磁盘? 还有,不支持rar的? 对于 RAR,您可以使用 Raroscope 或 google 获取另一个 Java 库。我提到了 Apache Commons Compress,因为据我所知,它是最完整的 Java 压缩库。

以上是关于在 Java 中提取存档文件 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在 .jar 存档中存储和提取文件的最佳方式是啥?

从 zip 存档中提取单个文件

提取存储在 tar 存档中的文件的先前版本

访问 .zip 存档中的文件而不提取它们

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

从python中的tar存档中提取压缩的gz文件