我如何使用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是一个表示最大数据大小的随机数

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

已解决。

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

outToFile << file.readAll();

相关内容

  • 没有找到相关文章

最新更新