libarchive - 提取到指定的目录

ogg*_*ter 8 c++ archive

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

Ale*_*ach 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());
Run Code Online (Sandbox Code Playgroud)

destination输出路径在哪里.它有效.


ogg*_*ter 6

来自libarchive讨论板:

"当然,这取决于提取的档案.

通常,您可以将chdir()发送到您希望输出的目录,然后使用类似于Wiki示例页面中的代码:

一个完整的提取器示例

或者在untar.c示例程序中:

解开示例

当然,如果你提取的tar文件有令人感兴趣的文件名(例如"c:\ someotherdirectory"),那么你需要在提取时使用文件名.

请注意,这些示例都使用archive_read_next_header()从输入存档中获取描述下一个条目的条目对象; 然后,您可以以任何方式自由编辑该条目描述 - 特别是,您可以在调用archive_write_header()之前更改名称,所有者或权限,以在磁盘上重新创建条目.

上面Wiki中的示例页面可能是最好的起点."