如何使用QuaZip提取多个文件?

时间:2013-05-15 02:11:59

标签: c++ qt qt4 zip quazip

我有以下代码来浏览zip存档中的文件夹和文件列表,在我去的时候创建它们(如果还没有创建文件也创建路径)。

当我使用readData(char*, qint64)提取内部文件数据以将其流式传输到QFile时,应用程序崩溃。我不认为这是正确的使用,但它是我所见过的(在这个网站上的一个非常宽松的例子中)我还必须更改QuaZipFile.h以使该函数公开以便我可以使用它(也暗示我不应该使用它。)

它不会在没有内容的第一个文件上崩溃但在此之后会崩溃。这是必要的代码(询问您是否需要了解更多信息):

QFile newFile(fNames);
newFile.open(QIODevice::WriteOnly);
QTextStream outToFile(&newFile);
char * data;
int len = file.readData(data, 100000000);
if(len > 0) {
    outToFile << data;
}
newFile.close();

它没有通过int len行。我应该在这里使用什么? 请注意,之前定义的变量文件很像这样:

QuaZip zip("zip.zip");
QuaZipFile file(&zip);
...
zip.goToFirstFile();
...
zip.goToNextFile();

传递给readData的int是最大数据大小的随机数。

2 个答案:

答案 0 :(得分:3)

崩溃的原因是您没有为缓冲区分配任何内存,名为data

答案 1 :(得分:0)

解决。

我尝试使用不同的读取(readData,read,readLine),发现这行不需要数据缓冲区:

outToFile << file.readAll();