Out of order...

Originally Posted by
CodeHunt
I am using zlib header for this
You are not using any zlib function directly here. qCompress and qUnCompress using the zlib library but do not produce the same output as a zlib stream. Ultimately it is irrelevant because your problem lies elsewhere.
out<<qCompress(ba);
// Decompress:
QFile inFile
("C:\\xx.abc");
out<<qUncompress(ba);
QFile inFile("x.x");
inFile.Open(QIODevice::ReadOnly);
QByteArray ba=inFile.readAll();
QFile file("xx.abc");
file.open(QIODevice::WriteOnly);
QDataStream out(&file);
out<<qCompress(ba);
// Decompress:
QFile inFile("C:\\xx.abc");
inFile.open(QIODevice::ReadOnly);
QByteArray ba=inFile.readAll();
QFile file("C:\\y.abc");
file.open(QIODevice::WriteOnly);
QDataStream out(&file);
out<<qUncompress(ba);
To copy to clipboard, switch view to plain text mode
You are misusing QDataStream. If you write a file with QDataStream then you need to read it with QDataStream; you do not do this. Secondly, QDataStream is a serialisation mechanism for data structures, not an arbitrary binary writer. You should use QIODevice::write() and QIODevice::read() or readAll() directly for this application.
#include <QtCore>
int main(int argc, char *argv[])
{
QFile origFile
("xx.txt");
origFile.close();
qint64 count = file.write(qCompress(ba));
qDebug() << "Wrote" << count << "compressed bytes";
file.close();
}
}
//Decompress:
qint64 count = file.write(qUncompress(ba));
qDebug() << "Wrote" << count << "uncompressed bytes";
file.close();
}
}
return 0;
}
#include <QtCore>
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
QFile origFile("xx.txt");
if (origFile.open(QIODevice::ReadOnly)) {
QByteArray ba = origFile.readAll();
origFile.close();
QFile file("xx.abc");
if (file.open(QIODevice::WriteOnly)) {
qint64 count = file.write(qCompress(ba));
qDebug() << "Wrote" << count << "compressed bytes";
file.close();
}
}
//Decompress:
QFile inFile("xx.abc");
if (inFile.open(QIODevice::ReadOnly)) {
QByteArray ba = inFile.readAll();
QFile file("yy.txt");
if (file.open(QIODevice::WriteOnly)) {
qint64 count = file.write(qUncompress(ba));
qDebug() << "Wrote" << count << "uncompressed bytes";
file.close();
}
}
return 0;
}
To copy to clipboard, switch view to plain text mode
Bookmarks