在C/C++中解压tar.xz文件

3
我正在编写一个从服务器下载tar.xz文件并将其解压到特定位置的程序。我无法找到一种在特定位置解压tar.xz文件的方法。我正在使用Qt,因此更适用于Qt的方式会更有用,但我不介意。

+1 让我对之前没有接触过的 .xz 格式产生了好奇心。 - Jakob Borg
1个回答

2

Qt不支持档案文件。你可以查看KDE库,它提供了虚拟文件系统的支持,或者使用QProcess直接调用tar。使用-C <dir>(大写C)指定要解压缩到的目录。

[编辑]还有一个名为libtar(BSD许可证)的库。


我宁愿不使用QProcess,因为我希望我的应用程序也能在Windows上运行,而使用QProcess意味着我必须使用tar来发布Windows版本。也许有人可以给我提供一个关于liblzma的教程。 - Tom Leese
那个库不允许你读取tar归档文件。如果“.xz”不是拼写错误,那么liblzma只允许你解压缩归档文件。但通常tar归档文件是使用bzip2(.bz2)或gzip(.gz)进行压缩的。对于这些,你可能需要其他库。 - Aaron Digulla
不确定,但可能是可行的,因为 GNU tar 可以实现。 - Tom Leese
然后,您必须将tar源代码转换为库,并将您的代码与其链接 :-) 请注意,GNU tar是GPL,因此如果您使用它,您的产品也将被GPL保护。 - Aaron Digulla
1
我找到了一个叫做libtar的东西,可能会对我有所帮助。 - Tom Leese
显示剩余2条评论

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