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

标签 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 是最大数据大小的随机数。

最佳答案

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

关于c++ - 如何使用 QuaZip 提取多个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16555666/

相关文章:

c++ - 函数模板修改用顶级 const 声明的参数 : clang bug?

c++ - g++ 不允许在 lambda 中通过引用对 const 对象进行广义捕获?

c++ - Qt shutdown() 不适用于已部署的应用程序

drag-and-drop - 从 QTableView/QSqlTableModel 中拖动一个项目

c++ - 堆 block 修改超过请求的大小

c++ - 段错误发生在某些编译器中,但其他编译器没有

c++ - 协助在 MFC 中从多字节移植到 UNICODE

c++ - 连接 2 QTableWidget 中的行选择

c++ - 如何在 QTreeWidget 列中添加进度条

c++ - 在 Qt 应用程序中编译多个 .cpp 文件