解压缩文件未发现QT5的归档错误



我已经实现了一个创建zip文件的代码。zip文件获得成功创建,但是当我手动(无代码)尝试通过解压缩来检查zip文件的内容时,我会遇到一个错误,说明No archive found和解压缩过程停止..为什么会出现此问题。

这是我的代码

#include <QCoreApplication>
#include <QByteArray>
#include <QBitArray>
#include <QString>
#include <QDebug>
#include <QFile>
void Zip(QString filename , QString zipfilename);
int main(int argc, char *argv[]){
  QCoreApplication a(argc, argv);
  Zip("C:\programs\zipping_qt\sample.txt",
      "C:\programs\zipping_qt\samples.zip");
  qDebug() << "Done zipping";
  return a.exec();
}
void  Zip (QString filename , QString zipfilename){
  QFile infile(filename);
  QFile outfile(zipfilename);
  infile.open(QIODevice::ReadOnly);
  outfile.open(QIODevice::WriteOnly);
  QByteArray uncompressedData = infile.readAll();
  QByteArray compressedData = qCompress(uncompressedData,9);
  outfile.write(compressedData);
  infile.close();
  outfile.close();
}  

qCompress不会创建zip文件。它使用Zlib创建一个压缩数据块。这样的块只能通过使用qUncompress或直接调用Zlib直接解压缩。没有进行这种减压的标准独立效用。甚至gunzip都没有这样做,因为Zlib风格的API使用与GZIP不同的标题。

关于您的代码还有其他一些挑剔:

  1. 如果您不需要运行事件循环,则无需致电a.exec()

  2. 无需明确关闭文件,因为QFile是适当的C 类,并实现RAII。

  3. 您永远不要检查openreadAllwrite是否成功。

相关内容

  • 没有找到相关文章

最新更新