Libarchive 解压到指定文件夹?

Posted

技术标签:

【中文标题】Libarchive 解压到指定文件夹?【英文标题】:Libarchive to extract to a specified folder? 【发布时间】:2010-12-21 03:25:29 【问题描述】:

谁能帮助展示使用libarchive 将ZIP 文件解压缩到指定文件夹的示例?看起来提供的示例程序(untar.ctarfilter.cminitar)都将存档解压缩到当前工作目录。有没有办法对libarchive 说“提取到此文件夹及以下文件夹”而不破坏程序的活动文件夹?

其中一个主要驱动因素是提取代码将在后台线程中运行,因此更改程序工作目录可能会产生问题。这也将用于 ios 应用程序(iPhone、iPad),它对应用程序可以写入的文件夹很挑剔。

提前致谢。

【问题讨论】:

【参考方案1】:

您可以在调用archive_read_extract 之前重写每个archive_entry 的路径名。例如:

const char* path = archive_entry_pathname( entry );
char newPath[PATH_MAX + 1];
snprintf( newPath, PATH_MAX, "/SomeOtherDirectory/%s", path );
archive_entry_set_pathname( entry, newPath );

【讨论】:

小注:PATH_MAX 已经包含了终止的 nul,snprintf 也是如此。应该是char newPath[PATH_MAX]【参考方案2】:

untar.c 可以通过将要使用的路径添加到从untar() 传递给create_dir()create_file() 的路径名前面来轻松修改。

注意untar.c 是一个独立的解压器,独立于 libarchive。

使用 libarchive 可以轻松实现相同的效果 - 它使您可以在取消归档时完全控制文件和目录的创建。

【讨论】:

untar.c 不与 libarchive 分开。它是独立的,正确的,但它静态链接到 libarchive。

以上是关于Libarchive 解压到指定文件夹?的主要内容,如果未能解决你的问题,请参考以下文章

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

时如何去除目录结构及其解压到指定目录 (

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

windows如何用cmd命令解压指定的zip文件到指定目录里?

Linux怎么使用压缩和解压到指定目录的命令

linux解压zip到指定文件夹