void MainWindow::zipFile(QFileInfo fileInfo, QString passwd)
{QString zipPath = fileInfo.filePath().left(fileInfo.filePath().indexOf('.')) + QString(".zip");QString password(passwd);QuaZip newZip(zipPath);     // 将要打包生成的zip包if(newZip.open(QuaZip::mdCreate)) {QuaZipFile zipFile(&newZip);   // 压缩包内的文件QuaZipNewInfo newInfo(fileInfo.fileName(), fileInfo.dir().path());     if(zipFile.open(QIODevice::WriteOnly, newInfo, password.toUtf8().constData(), 0, 8)) {QFile file(fileInfo.filePath());if(file.open(QIODevice::ReadOnly)) {zipFile.write(file.readAll());} else {qDebug() << "<file not found." << _INFO_STR_ << ">";}file.close();zipFile.close();} else {qDebug() << "<zipFile open failed." << _INFO_STR_ << ">";}} else {qDebug() << "newZip open failed." << _INFO_STR_ << ">";}newZip.close();
}
 // 调用函数QFileInfo info(QString("C:\\Users\\XingWei\\Documents\\untitled33\\DetechThread.h"));zipFile(info, "123456");

此时看到已经生成了zip包,如下图所示。

通过测试压缩包的正确性,我采用了不同的解压工具进行测试,解压结果如下:

解压工具 是否正确解压
WinRAR
Bandizip
Windows资源管理器
360解压
7-Zip
好压

怎么回事呢,有的行,有的不行。。
就只是打包压缩了一个文件而已,按理说,要么这些工具都可以解出来,要么都不行


解决方案,为了能够适配所有解压工具,只是在上述代码中做一处更改即可。

// 将上述中的
QuaZipNewInfo newInfo(fileInfo.fileName(), fileInfo.dir().path());
// 更改为
QuaZipNewInfo newInfo(fileInfo.fileName(), fileInfo.filePath());

对,就这样,一切便解决了。。。

使用QuaZipFile进行加密后形成的压缩包,用WinRAR,Bandizip等可以解压出来文件,用360解压,7-zip等解压后的为空相关推荐

  1. 【Android 安全】DEX 加密 ( Java 工具开发 | 解压 apk 文件 | 加密生成 dex 文件 | 打包未签名 apk 文件 | 文件解压缩相关代码 )

    文章目录 一.解压 apk 文件 二.加密生成 dex 文件 三.打包未签名 apk 文件 四.完整代码示例 五.文件解压缩相关代码 六.执行结果 参考博客 : [Android 安全]DEX 加密 ...

  2. 【Android 安全】DEX 加密 ( 代理 Application 开发 | 解压 apk 文件 | 判定是否是第一次启动 | 递归删除文件操作 | 解压 Zip 文件操作 )

    文章目录 一.判定是否是第一次启动 二.递归删除文件操作 三.解压 Zip 文件操作 四.解压操作相关代码 参考博客 : [Android 安全]DEX 加密 ( 常用 Android 反编译工具 | ...

  3. linux把文件复制到压缩包里,Linux学习笔记(二十)文件压缩 zip压缩、tar打包、打包、解包...

    一.zip压缩 首先安装zip与unzip yum install -y zip/unzip zip 1.txt.zip 1.txt 压缩文件1.txt,压缩文件名称为1.txt.zip zip -r ...

  4. 检查压缩包是否损坏_修复损坏的gzip压缩文件之原理篇

    接修复损坏的gzip压缩文件之原理篇,再次引用GZIP结构图: 已知修复一个损坏的gzip文件的关键环节在于找到下一个正常压缩包的起始点.根据结构图中的信息可知,每个压缩包的开始结构中有是否到达尾部标 ...

  5. 【java】 文件批量下载并压缩为zip压缩包

    [java] 文件批量下载并压缩为zip压缩包 java常用的压缩技术 java中常见实现压缩与解压 业务场景 代码实现 注意点 java常用的压缩技术 常见的压缩格式有很多种,例如:zip.rar. ...

  6. c++配置并使用bit7z加密压缩或解压7z文件

    本文使用bit7z bit7z is a C++ static library which allows to compress and extract many file archive forma ...

  7. Excel记录指定文件夹下的所有文件名;批量解压压缩包,处理压缩包套压缩包问题;

    10.20 发现一个问题: 当压缩包过大,文件条目超过1048576时,rarfile库中的代码已经不能解决这个压缩包了,需要加装unrar库(from unrar import rarfile)和u ...

  8. 360病毒|360后缀文件|360勒索病毒|文件被加密为360|中了360勒索病毒怎么办?|数据库文件恢复|数据恢复|

    什么是勒索病毒 勒索病毒是一种目前流行的病毒,通过网络等多种途径传播,受害者电脑感染该病毒后后,病毒将自动加密受害者电脑里的多种常见文件,使得受害者的重要资料文件无法正常使用,或者是锁住用户电脑,并以 ...

  9. cmake编译安装完成后 执行cmake --version报错 bash: /usr/bin/cmake: 没有那个文件或目录

    cmake编译安装完成后 执行cmake --version报错 bash: /usr/bin/cmake: 没有那个文件或目录 cmake 没有那个目录 - 未完代码 - 博客园 因为直接使用cma ...

  10. JAVA编译成文件的说法_下列关于使用Javac命令编译后生成文件的说法中,正确的是?...

    下列关于使用Javac命令编译后生成文件的说法中,正确的是? 答:编译后生成的文件可以在Java虚拟机中运行\n\n编译后生成的文件为二进制文件\n\n编译后生成文件的后缀名为.class 线性表的链 ...

最新文章

  1. stm 32 IO重映射
  2. webbrowser php,C# WinForm WebBrowser 设置为编辑模式的示例代码
  3. LeetCode N-Queens
  4. event级别设置Resumable Space Allocation
  5. spring mvc DispatcherServlet详解之二---request通过Controller获取ModelAndView过程
  6. 关于mydumper的.metadata文件丢失
  7. php 钩子,php钩子原理是什么
  8. 转载:说一下AI的前景吧
  9. 数字图像处理总结(冈萨雷斯版)
  10. 没有任何匹配: mod_auth_mysql 阿里云_文案丨网易云让人感触良多的文案
  11. C语言底层原理(二):动态库、静态库
  12. 小白能读懂的 《手把手教你学DSP(TMS320X281X)》第六章 使用c语言操作dsp寄存器(以SCI为例进行说明))
  13. 遗传算法matlab_当结构设计遇到遗传算法应用ANSYS和MATLAB联合优化设计探索(二)...
  14. SUBMAIL 短网址 API 授权与验证机制
  15. 惠普触控板使用指南_手势操作更简便 笔记本触控板使用简介
  16. 设计模式(一):工厂模式
  17. “我,从油漆工开始的80后,曾经靠副业的收入买车买房”
  18. 第十二章、GDK学习
  19. vant 动态 粘性布局_Sticky 粘性布局
  20. 赛码浪潮笔试题库软件实施岗位_校园招聘在线笔试,原来大家都在用赛码

热门文章

  1. 小字辈(左子右兄加强版)(C语言版)
  2. 亚马逊CEO Andy 2021年收入2.12亿美元?
  3. jquery省地市三级联动
  4. 女大学生-程序员需要达到什么水平才能不被性别歧视?顺利拿到 20k 无压力?
  5. #419 科技乱炖:从以太坊升级,看区块链的不可能三角
  6. 中国新药研发监测数据库(药企药品信息实时情报)
  7. 手把手教你输出1000到2000之间的闰年
  8. Power Pivot入门(Excel2021专业加强版)
  9. PHP浮点数运算精度问题
  10. 牛客网 剑指Offer,一些值得记住的小题(五)