GUN tar for windows Practice

本文提供了一个使用QT编写的解压函数,适用于Windows和Linux系统,可以解压.tar.gz文件到指定目录。通过命令行操作gzip和tar完成解压缩过程。

windows 下调用gzip.exe 和tar.exe解压*.tar.gz压缩包到指定目录

如:解压D:/test/1.tar.gz 到E:/test/下

1.切换到压缩包所在目录下

cd /d D:

 

2.调用gzip.exe解压.gz压缩文件

gzip /test/1.tar.gz

 

3.调用tar.exe解包.tar

tar xvf /test/1.tar -C //./E:/test/

 

下面是我自己用QT写的解压函数,windows 和 linux 都适用。

#include <QtCore/QCoreApplication>
#include <QFile>
#include <QProcess>
#include <QDebug>
typedef int BOOL;
#define RET_FAILED -1
#define RET_SUCCESS 0

BOOL Extract(QString fileName,QString dstPath)
{
    if(fileName.length()<8 || fileName.right(7)!=".tar.gz")
    {
        qDebug()<<"Extract error:unknown file format,mast be '.tar.gz'";
        return RET_FAILED;
    }
    if(dstPath.length() == 0)
    {
        return RET_FAILED;
    }
    int ret;
    QProcess p;
    fileName = fileName.replace("//","/");

    qDebug()<<"Extrating "<<fileName<<" to "<<dstPath<<" ...";
    if(fileName.at(1) == ':')
    {
        QString driveId = fileName.left(2);
        fileName = fileName.right(fileName.length()-2);
        p.execute("cd /d " + driveId);
    }
    qDebug()<<"start to ungzip "<<fileName<<" ...";
    ret = p.execute("gzip -d " + fileName);

    if(ret != 0)
    {
        qDebug()<<"gzip returns error code:"<<ret;
    }
    qDebug()<<"ungzip "<<fileName<<" success!";
    fileName = fileName.left(fileName.length()-3);
    if(dstPath.at(1) == ':')
    {
        dstPath = "//./" + dstPath;
    }
    qDebug()<<"start to untar "<<fileName<<" ...";
    p.execute("tar xvf " + fileName + " -C " + dstPath);
    if(ret != 0)
    {
        qDebug()<<"tar returns error code:"<<ret;
    }
    qDebug()<<"untar "<<fileName<<" success!";
    QFile::remove(fileName);

    return RET_SUCCESS;
}


windows中打包tar文件 GUN tar 和在unix中使用tar命令基本上一样的。可以使用tar --help得到帮助的详细信息。 ------------------------------------------- GNU `tar' saves many files together into a single tape or disk archive, and can restore individual files from the archive. Usage: tar [OPTION]... [FILE]... If a long option shows an argument as mandatory, then it is mandatory for the equivalent short option also. Similarly for optional arguments. Main operation mode: -t, --list list the contents of an archive -x, --extract, --get extract files from an archive -c, --create create a new archive -d, --diff, --compare find differences between archive and file system -r, --append append files to the end of an archive -u, --update only append files newer than copy in archive -A, --catenate append tar files to an archive --concatenate same as -A --delete delete from the archive (not on mag tapes!) Operation modifiers: -W, --verify attempt to verify the archive after writing it --remove-files remove files after adding them to the archive -k, --keep-old-files don't overwrite existing files when extracting -U, --unlink-first remove each file prior to extracting over it --recursive-unlink empty hierarchies prior to extracting directory -S, --sparse handle sparse files efficiently -O, --to-stdout extract files to standard output -G, --incremental handle old GNU-format incremental backup -g, --listed-incremental handle new GNU-format incremental backup --ignore-failed-read do not exit with nonzero on unreadable files Handling of file attributes: --owner=NAME force NAME as owner for added files --group=NAME force NAME as group for added files --mode=CHANGES force (symbolic) mode CHANGES for added files --atime-preserve don't change acces
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值