libarchive - 提取到指定的目录

时间:2011-12-05 10:59:49

标签: c++ archive

我有一个tar文件,我想用libarchive提取到一个特定的目录。如何将libarchive提取到我想要的任何目录?目前它总是提取到我程序的工作目录中。我查看了this answer,但所有这一切都改变了归档中归档条目的位置,即它仍然只是在不同的子目录中提取到我程序的工作目录中。

2 个答案:

答案 0 :(得分:14)

我下一步解决了这个问题: (在调用'archive_write_header'函数之前插入此代码)

    const char* currentFile = archive_entry_pathname(archiveEntry);
    const std::string fullOutputPath = destination + currentFile;
    archive_entry_set_pathname(archiveEntry, fullOutputPath.c_str());

其中destination是输出路径。 它有效。

答案 1 :(得分:6)

来自libarchive讨论区:

“当然,这取决于提取的档案。

通常,你会将chdir()带到你想要输出的目录,然后使用类似于Wiki Examples页面中的代码:

A Complete Extractor Example

或在untar.c示例程序中:

untar Example

当然,如果你提取的tar文件有 有趣的文件名(例如“c:\ someotherdirectory”), 然后你需要在提取时使用文件名。

请注意,这些示例都使用archive_read_next_header() 从输入档案中获取一个入口对象 下一个条目;然后,您可以自由编辑该条目说明 以任何你想要的方式 - 特别是,你可以改变 姓名,所有者或权限 - 在致电之前 archive_write_header()重新创建条目 磁盘。

上面Wiki中的示例页面可能是 最佳起点。“