在Java中解压包含多个文件和目录的7zip归档文件

4

我希望能够在Java中解压包含多个文件和目录的7zip/lzma存档。我尝试使用官方的7zip SDK,但由于我的编程技能不够熟练,所以失败了。 然而,我找到了一些库可以更轻松地在Java中支持,比如LzmaOutputStream/LzmaInputStream - 但是我不知道如何使用这些“流”来解压缩多文件存档。我卡住了。


请查看此链接:https://dev59.com/mE_Ta4cB1Zd3GeqPCaG_#35750229。 - Simon
1个回答

2
在这个例子中,将compressed替换为new File("PATH_TO_FILE")。我认为示例代码将产生一个输出流,LzmaOutputStream或该库有适当的方法将流转换为二进制或字符串。
默认情况下,Lzma仅是一种压缩算法,而不像tar或zip那样是文件归档工具。(注意:7-Zip程序是文件归档工具,但你链接的库不支持文件遍历和解包。)
我建议使用一个得到良好支持的压缩算法,如Zip或gz。如果你必须使用lzma,可以使用tar构建文件归档,然后用lzma进行压缩。或者使用零压缩的zip。
这里有一个Java TAR库的链接:java TAR library

感谢提供信息。由于7zip文件已经提供且格式无法更改(虽然很遗憾),因此无法切换到另一个库。我也找不到任何关于7zip存档的规范,这很奇怪 - 因为已经有一些应用程序支持7zip,但它们不是开源的。 - Wolkenjaeger

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