我正在尝试使用libarchive
库重命名存档的条目。特别是我正在使用该功能archive_entry_set_pathname
。
文件和空目录已正确重命名,但不幸的是,如果目录不为空,这将不起作用:不是被重命名,而是创建一个具有新名称的新空目录作为具有旧名称的目标目录的兄弟。
相关代码片段:
...
while (archive_read_next_header(inputArchive, &entry) == ARCHIVE_OK) {
if (file == QFile::decodeName(archive_entry_pathname(entry))) {
// FIXME: not working with non-empty directories
archive_entry_set_pathname(entry, QFile::encodeName(newPath));
}
int header_response;
if ((header_response = archive_write_header(outputArchive, entry)) == ARCHIVE_OK) {
... // write the (new) outputArchive on disk
}
}
非空目录有什么问题?