0

我有下面的代码来移动一个 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 是最大数据大小的随机数。

4

2 回答 2

3

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

于 2013-05-17T22:33:50.413 回答
0

解决了。

我尝试使用不同的读取(readData、read、readLine),发现这条线不需要数据缓冲区即可工作:

outToFile << file.readAll();
于 2013-05-15T13:45:09.843 回答