Qt 如何解压zip包

weixin_38054293 2019-09-19 11:26:01
如题
...全文
816 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38099556 2019-09-19
  • 打赏
  • 举报
回复
用7za就很不错的,以解决问题为首要
weixin_38101849 2019-09-19
  • 打赏
  • 举报
回复
为啥不试试zlib呢
weixin_38058520 2019-09-19
  • 打赏
  • 举报
回复
下载个7za.exe,用QProcess::execute()来解压
weixin_38059973 2019-09-19
  • 打赏
  • 举报
回复
我怎么用
weixin_38062424 2019-09-19
  • 打赏
  • 举报
回复
QProcess zip;    QStringList arguments;    arguments<<QString("x %1 -o%2").arg(file).arg(tempPath);    zip.start("7za.exe", arguments);
weixin_38068785 2019-09-19
  • 打赏
  • 举报
回复
这种方式启动不了啊?谢谢
weixin_38069603 2019-09-19
  • 打赏
  • 举报
回复
调用第三方zip库、、
weixin_38071717 2019-09-19
  • 打赏
  • 举报
回复
网上应该有zip压缩解压的源码。直接用在工程中就行了。
weixin_38089806 2019-09-19
  • 打赏
  • 举报
回复
关于Qt内置的解压zip类QZipReader 写了一个实例 打架可以参考一下复制代码#include <QtGui/5.0.1/QtGui/private/qzipreader_p.h>#include <QtCore>int main(int argc,char *argv[]){        QZipReader zip("test.zip");//当前目录下的test.zip        QList<QZipReader::FileInfo> l= zip.fileInfoList();//获取zip中所有文件信息        foreach(QZipReader::FileInfo f,l){//遍历                qDebug()<<"Filename:"<<f.filePath;//获取文件名并输出                qDebug()<<"Filedata:"<<zip.fileData(f.filePath);//获取文件内容 (返回QByteArray txt文件可以直接输出 其他文件输出肯定是乱码不解释)        }        //qDebug()<<zip.extractAll("./test"); //这功能不好用的 建议别用 又不是做压缩软件 前面信息够你用的        return 0;}/*附录:1.QZipReader::FileInfo的声明    struct Q_GUI_EXPORT FileInfo    {        FileInfo();         FileInfo(const FileInfo &other);        ~FileInfo();        FileInfo &operator=(const FileInfo &other);        //不解释        bool isValid() const;//貌似是有没有效?        QString filePath;//路径        uint isDir : 1;//是否为目录 这个不好用 就是因为他不好用使得extractAll不好用        uint isFile : 1;//是否为文件        uint isSymLink : 1;//快捷方式        QFile::Permissions permissions;//看QFile::Permissions的文档就好了        uint crc;//不知道        qint64 size;//大小        QDateTime lastModified;//最后修改日期        void *d;//不知道    };2.几个有用的函数    QList<FileInfo> fileInfoList() const; 获取所有文件信息    FileInfo entryInfoAt(int index) const; 获取第index个文件的信息    int count() const; 文件数    QByteArray fileData(const QString &fileName) const;获取文件内容    Status status() const;获取状态 用于判断错误 翻源码不解释    void close(); 关闭?    QIODevice* device() const; 很常见 获取zip文件的QIODevice    bool isReadable() const; 是否可读    bool exists() const;是否存在    explicit QZipReader(const QString &fileName, QIODevice::OpenMode mode = QIODevice::ReadOnly ); 构造函数1    explicit QZipReader(QIODevice *device);构造函数2    ~QZipReader(); 这个还用解释吗?*/
weixin_38090768 2019-09-19
  • 打赏
  • 举报
回复
对应的还有QZipWriter 说这个就跑题了 楼主问的是怎样解压.......源码位置qt5/qtbase/src/gui/text/qzipwriter.hqt5/qtbase/src/gui/text/qzipreader.hqt5/qtbase/src/gui/text/qzip.cppinclude位置qt5/qtbase/include/QtGui/5.0.1/QtGui/private/qzipreader_p.hqt5/qtbase/include/QtGui/5.0.1/QtGui/private/qzipwriter_p.h
weixin_38098983 2019-09-19
  • 打赏
  • 举报
回复
最简单的办法如1楼所说,调用7z的命令行版本7za.exe

476

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧