In einem Projekt muss ich binäre Daten aus einer Datei lesen und unter Verwendung gzip
dekomprimieren. Problem ist, dass QFile::readAll()
nicht wirklich alle Bytes liest oder irgendeinen Fehler meldet.Nicht alle Binärdaten aus Datei lesen
Hier ist mein Code:
QFile ifile("/tmp/currentAlmanac.gz");
qDebug() << "File Size:" << ifile.size();
ifile.open(QIODevice::ReadOnly);
QByteArray data = ifile.readAll();
ifile.close();
qDebug() << "Almanac Size:" << data.size();
Die Ausgabe lautet:
Dateigröße: 78.637
Almanac Größe: 78281
Gibt es etwas, was ich falsch mache?
Es gibt viel freien RAM.
Specs: Qt5.10 auf Ubuntu16.04
Haben Sie versucht, den Inhalt der Datei zu überprüfen? Die Dateigröße auf dem Datenträger und seine tatsächlichen Bytes können je nach Dateisystem, Datenträgerkomprimierung usw. unterschiedlich sein. – Azeem
@Azeem Ich muss es dekomprimieren, und die ursprüngliche Dateidekomprimierung funktioniert, während dem QByteArray einige Daten fehlen. Ich habe versucht, den Almanach erneut von der NASA herunterzuladen, zu dekomprimieren und zu komprimieren. Ich bin zu 99,9% sicher, dass der Inhalt in Ordnung ist. –
Fehlen einige Daten? Wie haben Sie das verifiziert? – Azeem