1

我正在尝试找到一种使用 libzip 压缩包含文件的文件夹的方法。为了澄清一点,我在技术上可以压缩它,问题是,当我尝试用 libzip 解压缩它时,它崩溃了。我相信,部分原因是我使用的事实:

 zip_file_add(archive, file, s, ZIP_FL_OVERWRITE)

从文件夹到文件的小路径基本上在哪里file,而不仅仅是文件名。这样,我可以将包含所有文件的文件夹存档。但我想这就是它崩溃的原因,因为对于归档文件夹,有zip_dir_add(),但我找不到一种有效的方式来使用它们。我可以使用它们将文件夹和文件都添加到存档中,但它不会是文件夹内的文件,只是文件和文件夹。

有趣的是,如果我使用zip_file_add()上述方法使用 libzip 归档该文件夹,即使当我使用 libzip 解压缩它时它会崩溃,但当我使用 Ark(来自 KDE)解压缩它时它不会崩溃。但是如果我用 Ark 压缩那个文件夹,那么用 libzip 解压缩就可以了。

4

1 回答 1

1

zip_dir_add()我认为除非您想在存档中创建一个空目录,否则没有必要使用它。但是,如果您还要将文件放入目录中,也可以使用它。这是使用完整路径zip_file_add()并将其作为参数传递为name存档根目录的相对路径来完成的。

例如(省略错误检查)

zip_dir_add(archive, "Directory 1", ZIP_FL_ENC_UTF_8);
...
zip_file_add(archive, "Directory 1/novel.txt", s, ZIP_FL_OVERWRITE | ZIP_FL_ENC_UTF_8);

您还可以将您的代码与https://gist.github.com/clalancette/bb5069a09c609e2d33c9858fcc6e170e进行比较

如果它在解压缩时崩溃但在使用 3rd 方工具时没有崩溃,那么可能是您的解压缩代码中存在错误,而不是您的邮政编码?

于 2019-06-06T01:57:55.537 回答