Libarchive提取到指定的文件夹?

时间:2010-12-21 03:25:29

标签: iphone c zip extraction compression

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

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

提前致谢。

2 个答案:

答案 0 :(得分:7)

您可以在调用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 );

答案 1 :(得分:0)

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

untar()

请注意,untar.c是一个独立的解压缩程序,与libarchive分开。

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