在 C/C++ 中提取 tar.xz

Posted

技术标签:

【中文标题】在 C/C++ 中提取 tar.xz【英文标题】:Extract a tar.xz in C/C++ 【发布时间】:2010-07-27 12:32:21 【问题描述】:

我正在编写一个程序,它从服务器下载 tar.xz 文件并将它们提取到某个位置。我正在努力寻找在某个地方提取 tar.xz 文件的方法。我正在使用 Qt,所以更多的 Qt 方式会很有用,但我并不介意。

【问题讨论】:

+1 让我对以前没有遇到过的 .xz 感到好奇。 【参考方案1】:

Qt 中不支持存档。您可以查看支持虚拟文件系统的 KDE 库,也可以使用QProcess 直接调用tar。使用-C <dir>(大写C)指定解压到的目录。

[编辑] 还有libtar(BSD 许可证)。

【讨论】:

我不想使用 QProcess,因为我希望我的应用程序也可以在 Windows 上运行,而使用 QProcess 意味着我必须为 Windows 提供 tar。也许有人可以给我一个关于 liblzma 的教程。 该库不允许您读取 tar 存档。如果“.xz”不是错字,那么 liblzma 将只允许您解压缩存档。但通常 tar 档案使用 bzip2 (.bz2) 或 gzip (.gz) 压缩。对于这些,您可能需要其他库。 我相信我可以使用zlib来提取tar,这样对吗? 是的,但是你有 两个 容器在彼此内部。你有 GZip 容器,里面有一个 Tar 容器。解压缩文件只会给您一个未压缩的 tar 存档。你打算如何从中读取文件? 我发现了一个叫做 libtar 的东西,它可能对我有帮助。

以上是关于在 C/C++ 中提取 tar.xz的主要内容,如果未能解决你的问题,请参考以下文章

从 xz 文件中提取文件

Ubuntu 18.04:无法使用单个命令提取下载的 tar.xz 文件

为 ubuntu 10.04 LTS 提取 tar.xz 和 tar.lz 的 gnutls 库文件

百科知识 .tar.xz文件如何打开

linux怎么装后缀为tar.xz的软件安装包?

从暴露给 COM 的 C# 类中提取 C/C++ 头文件