我使用标题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
答案 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;
}