我在 Ubuntu 12.04 x86_64 上使用 QuaZIP 0.5.1 和 Qt 5.1.1 for C++。
我的程序读取一个大的 gzip 压缩二进制文件,通常是 1GB 或更多的未压缩数据,并对其进行一些计算。它不是计算广泛的,并且大部分时间都在 I/O 上传递。因此,如果我能找到一种方法来报告读取了多少文件数据,我可以在进度条上报告它,甚至提供对 ETA 的估计。
我打开文件:
QuaGzipFile gzip(fileName);
if (!gzip.open(QIODevice::ReadOnly))
{
// report error
return;
}
但是 QuaGzipFile 中没有查找文件大小或当前位置的功能。
我不需要找到未压缩流的大小和位置,压缩流的大小和位置很好,因为粗略估计进度就足够了。
目前,我可以找到压缩文件的大小,使用QFile(fileName).size()
. 另外,我可以很容易地找到未压缩流中的当前位置,方法是保持gzip.read()
. 但这两个数字不匹配。
如果有帮助,我可以更改 QuaZIP 库,并访问与 zlib 相关的内部内容。