Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2494|回复: 1
打印 上一主题 下一主题

qCompress/qUncompress

[复制链接]

1272

主题

2067

帖子

7958

积分

认证用户组

Rank: 5Rank: 5

积分
7958
跳转到指定楼层
楼主
发表于 2018-4-12 15:30:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Qt中提供了qCompress/qUncompress来进行文件的压缩与解压,但存在两个问题:
  • 无法很好地压缩/解压缩文件夹。
  • 只能将一个文件压缩为某种格式,压缩后的文件无法通过其它解压工具打开(如:7zip,或WinRAR),只能通过qUncompress解压读取,也就是说qCompress生成的压缩文件不包含普通压缩文件的一些头信息,导致无法解压。

回复

使用道具 举报

1272

主题

2067

帖子

7958

积分

认证用户组

Rank: 5Rank: 5

积分
7958
沙发
 楼主| 发表于 2018-4-12 15:34:56 | 只看该作者
  1. void MainWindow::zipUnZip()
  2. {
  3.     //zipping
  4.    Zip("/home/qt/comm_record.txt","/home/qt/demo.dor");
  5.    qDebug() << "Done zipping";

  6.    //unzipping
  7.    Unzip("/home/qt/demo.dor","/home/qt/demo_unzipped.txt");
  8.    qDebug() << "Done unzipping";
  9. }


  10. void Zip (QString filename , QString zipfilename){

  11.     QFile infile(filename);
  12.     QFile outfile(zipfilename);
  13.     infile.open(QIODevice::ReadOnly);
  14.     outfile.open(QIODevice::WriteOnly);
  15.     QByteArray uncompressedData = infile.readAll();
  16.     QByteArray compressedData = qCompress(uncompressedData,9);
  17.     outfile.write(compressedData);
  18.     infile.close();
  19.     outfile.close();
  20. }

  21. void Unzip (QString zipfilename , QString filename){
  22.     QFile infile(zipfilename);
  23.     QFile outfile(filename);
  24.     infile.open(QIODevice::ReadOnly);
  25.     outfile.open(QIODevice::WriteOnly);
  26.     QByteArray uncompressedData = infile.readAll();
  27.     QByteArray compressedData = qUncompress(uncompressedData);
  28.     outfile.write(compressedData);
  29.     infile.close();
  30.     outfile.close();
  31. }

  32. #include <QtCore/QFile>
  33. #include <QByteArray>
  34. #include <QBitArray>
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|firemail ( 粤ICP备15085507号-1 )

GMT+8, 2024-11-23 03:50 , Processed in 0.058399 second(s), 19 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表