Libzip:如何压缩其中包含文件的文件夹?

时间:2018-07-13 20:48:55

标签: c libzip

我正在尝试找到一种使用libzip压缩其中包含文件的文件夹的方法。为了清除一些问题,从技术上讲,我可以将其压缩,问题是,当我尝试使用libzip对其进行解压缩时,它也会崩溃。我相信部分原因是我使用的事实:

PropertyChanged

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

有趣的是,如果我如上所述使用zip_dir_add()用libzip归档该文件夹,即使当我用libzip解压缩它时崩溃了,但是当我用Ark(来自KDE)解压缩它时却没有崩溃。但是,如果我使用Ark对该文件夹进行压缩,则使用libzip进行解压缩即可。

1 个答案:

答案 0 :(得分:0)

我认为,除非您要在档案中创建一个空目录,否则不必严格使用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

进行比较

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