使用libzip将文件解压缩到磁盘

时间:2016-02-11 18:20:52

标签: c++ libzip

我正在尝试使用c ++和libzip库解压缩可执行文件。从rodrigo对类似问题的回答开始,我来看这个示例代码:

#include <zip.h>
int main()
{
    //Open the ZIP archive
    int err = 0;
    zip *z = zip_open("foo.zip", 0, &err);

    //Search for the file of given name
    const char *name = "file.txt";
    struct zip_stat st;
    zip_stat_init(&st);
    zip_stat(z, name, 0, &st);

    //Alloc memory for its uncompressed contents
    char *contents = new char[st.size];

    //Read the compressed file
    zip_file *f = zip_fopen(z, "file.txt", 0);
    zip_fread(f, contents, st.size);
    zip_fclose(f);

    //And close the archive
    zip_close(z);
}

根据我的理解,这段代码可以解压缩文件,但我不知道如何将该文件写入磁盘,就像提取zip文件一样,使用像winzip这样的工具。将解压缩的数据存储在内存中对我没有帮助,但我一直无法弄清楚如何将文件实际存入磁盘。

1 个答案:

答案 0 :(得分:0)

这样的事情应该这样做:

class EUser(models.Model):
    username = models.CharField(max_length=255, null=True)
    password = models.CharField(max_length=255, null=True)
    address = models.ForeignKey(Address, null=True)
    temp_user = models.CharField(max_length=255, null=True)
    user = models.OneToOneField(settings.AUTH_USER_MODEL, null=True, default=None)
    title = models.CharField(max_length=10)
    first_name = models.CharField(max_length=255)
    last_name = models.CharField(max_length=255)

查找std::ofstream

当然,您应该检查所有if(!std::ofstream("file1.txt").write(contents, st.size)) { std::cerr << "Error writing file" << '\n'; return EXIT_FAILURE; } 个文件函数,看看它们是否在返回之前返回了错误。