0

我正在尝试解压缩 Zip 文件。在 Android 设备上使用最新的 Qt 5.15。

QFile downloadedZipFile(VALID_ZIP_LOCATION);
QuaZip zip(&downloadedZipFile);
if (!zip.open(QuaZip::mdUnzip)) {
    qDebug() << "error" << zip.getZipError();
}

如果我的文件大于 2GB,则会收到错误 -1000。2GB 以下的文件按预期工作。

我试过了

zip.setZip64Enabled(true);

在打开文件之前没有成功。我也尝试使用构造函数

QuaZip zip(VALID_ZIP_LOCATION)

稍后访问 zip 时,我还会收到以下错误:

QuaZip::goToFirstFile():ZIP 未在 mdUnzip 模式下打开

这是有道理的,因为它首先无法打开文件。

感谢任何帮助,因为我已经在这个问题上苦苦挣扎了几天。

4

1 回答 1

0

问题是一个未解决的 QT-Bug。其中 QFile::seek 不能超过 32 位整数以上的限制。 https://bugreports.qt.io/browse/QTBUG-84033

在确定问题后,我可以通过实现用于在 java 中解压缩文件的本机代码来解决此问题。由于 iPhone 仅在 64 位系统上运行,因此不需要将本机实现移植到 ObjC。

于 2020-09-02T09:28:07.957 回答