我有一个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输出路径在哪里.它有效.
来自libarchive讨论板:
"当然,这取决于提取的档案.
通常,您可以将chdir()发送到您希望输出的目录,然后使用类似于Wiki示例页面中的代码:
或者在untar.c示例程序中:
当然,如果你提取的tar文件有令人感兴趣的文件名(例如"c:\ someotherdirectory"),那么你需要在提取时使用文件名.
请注意,这些示例都使用archive_read_next_header()从输入存档中获取描述下一个条目的条目对象; 然后,您可以以任何方式自由编辑该条目描述 - 特别是,您可以在调用archive_write_header()之前更改名称,所有者或权限,以在磁盘上重新创建条目.
上面Wiki中的示例页面可能是最好的起点."