5

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

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

提前致谢。

4

2 回答 2

9

您可以在调用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 );
于 2011-04-07T17:08:39.883 回答
0

untar.c通过将要使用的路径添加到传递给create_dir()create_file()来自的路径名前面,可以轻松地进行修改以执行此操作untar()

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

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

于 2010-12-21T03:36:24.857 回答