Cpp使用libzip强制写zip

时间:2017-02-01 04:03:20

标签: c++ zip libzip

我使用标题zip.hpp(可在https://markand.bitbucket.io/libzip/index.html或此处http://hg.markand.fr/libzip/file找到)来压缩某些文件。

要删除原始文件,我使用remove("myfile.txt")

显然,zip.hpp在运行时结束时压缩文件,因此无法找到文件并且不会创建zip文件夹。如果我遗漏remove("myfile.txt"),一切正常,除了我有几个文件飞来飞去,我只想以他们的拉链形式。

你对如何强制libzip编写zip文件有什么想法吗? 我希望如果我删除archive - 实例,它应该强制创建,但显然libzip::Archive - 类没有析构函数(至少我找不到一个和{{1抛出许多错误)

我的基本代码如下:

delete archive

1 个答案:

答案 0 :(得分:1)

libzip::Archive将在超出范围时写入其内容。所以你需要做的就是在删除文件之前引入一个aditional范围。

#include <fstream>
#include <zip.h>
#include "lib/zip.hpp"

int main () {

    { // Additional scope 
        libzip::Archive archive("output.zip", ZIP_CREATE);
        std::ofstream outfile ("myfile.txt");
        outfile << "Hello World\n";
        outfile.close();
        archive.add(libzip::source::file("myfile.txt"), "myfile2.txt");
    } // Archive is written now.

    remove("myfile.txt"); 

    return 0;
}