QT 解压tar.gz格式的压缩包

一、tar.gz

以.tar.gz为后缀的文件是一种压缩文件,在Linux下常见。一般情况下都是源代码的安装包。它其实是先打包成tar格式的文件,然后利用gzip压缩技术来压缩。这两天我想在windows下去解压这种类型的压缩包,不是拿那种可视化的软件去操作,所以一直想着有什么开源的解压库,可以一次解压,但是没找到,最后使用windows命令行去执行,通过gzip.exe和7za.exe控制台程序去执行
在这里插入图片描述

二、原理

分两步走,先将file.tar.gz压缩包解压为file.tar,再将file.tar解压为file.

三、示例代码

//D:/pig.tar.gz -> D:/pig
bool FileOperator::extractTarGz(QString fileName, QString dstPath)
{
    if(fileName.length()<8 || fileName.right(7)!=".tar.gz")
    {
        qDebug()<<"格式错误, 必须为'.tar.gz'";
        return false;
    }
    if(dstPath.length() == 0)
    {
        qDebug()<<"解压目标路径为空";
        return false;
    }
    int ret;
    QProcess p;

    qDebug()<<fileName<<" 解压到 "<<dstPath;

    fileName.replace("/", "\\");
    //exe程序路径
    QString binPath = QApplication::applicationDirPath() + "/";
    binPath.replace("/", "\\");
    qDebug()<<binPath;
    
    //1.使用Windows命令行(路径表示方法"\\"),gzip.exe、7za.exe
    //解压gz格式
    QStringList args;
    args.append("-d");
    args.append("-f");
    args.append(fileName);
    ret = p.execute(binPath + "gzip.exe", args);
    if(ret != 0)
    {
        qDebug()<<"gzip 返回错误码:"<<ret;
        return false;
    }
    qDebug()<<"file.tar.gz -> file.tar 成功!";

    //压缩包文件名剥离".gz"
    fileName = fileName.left(fileName.length()-3);

    //解压tar格式
    QStringList args1;
    args1.append("x");
    args1.append(fileName);
    args1.append("-y");
    dstPath.replace("/", "\\");
    args1.append("-o" + dstPath);
    p.execute(binPath + "7za.exe", args1);
    if(ret != 0)
    {
        qDebug()<<"7za 返回错误码:"<<ret;
        return false;
    }
    qDebug()<<"file.tar -> file 成功!";
    QFile::remove(fileName);

    return true;
}

四、上面的代码相当于在命令行中执行。

代码和命令行执行的效果是一样的,7za功能很强大,支持多种格式,使用它解压tar和gz格式都可以。
在这里插入图片描述
在这里插入图片描述
参考了:[hanzengyi]:windows 下调用gzip.exe 和tar.exe解压*.tar.gz压缩包到指定目录

qt-everywhere-opensource-src-5.5.1.tar.gz是一个开源的Qt软件包。Qt是一个跨平台的应用程序开发框架,它提供了丰富的应用程序开发工具和库,使开发者能够轻松地创建高质量、可扩展、易于维护的应用程序。 这个软件包是一个源代码包,以.tar.gz格式打包。.tar.gz是一种常见的压缩格式,它将多个文件和目录打包成一个单独的文件,以便更方便地传输和存储。打开这个压缩包后,可以找到Qt框架的源代码和相关文件。 Qt提供了跨平台的应用程序开发环境,使开发者能够在不同的操作系统上编写一次代码,然后编译为适用于多种平台的可执行文件。它支持Windows、Mac、Linux等多个主流操作系统,并且能够在嵌入式设备上运行。 Qt具有丰富的功能和工具,包括图形用户界面(GUI)开发、网络编程、数据库访问、多媒体处理等。它还提供了一套易于使用的API,以及一系列的开发工具和集成环境,帮助开发者更高效地创建应用程序。 对于想要使用Qt进行应用程序开发的开发者来说,qt-everywhere-opensource-src-5.5.1.tar.gz是一个非常有价值的资源。通过获取这个源代码包,开发者可以自定义和扩展Qt框架,以满足自己的需求。 总之,qt-everywhere-opensource-src-5.5.1.tar.gz是一个开源的Qt软件包,它提供了丰富的应用程序开发工具和库,支持跨平台开发,对于想要使用Qt进行应用程序开发的开发者来说非常有价值。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值