Folder compression uses QZipWriter package method

Folder compression uses QZipWriter package method

Add
QT += core gui-private to project engineering files

#include <private/qzipreader_p.h>
#include <private/qzipwriter_p.h>
bool QZipHelper::zip(QString SavePath,QString DirPath,QString layer){
    
    
    bool  ret;
    QZipWriter   *writer = new QZipWriter(SavePath);
    if(QZipWriterEx(writer,DirPath,layer)){
    
    
        ret=true;
    }else{
    
    
        ret=false;
    }
    writer->close();
    delete writer;
    return  ret;

} 
bool  QZipHelper::QZipWriterEx(QZipWriter *writer,QString DirPath,QString layer){
    
    
    QDir dir(DirPath);
    if (dir.exists()) {
    
    
        dir.setFilter(QDir::Dirs|QDir::Files|QDir::NoDotAndDotDot);
        dir.setSorting(QDir::DirsFirst);
        QFileInfoList list = dir.entryInfoList();
        int i=0;
        do{
    
    
            QFileInfo fileInfo = list.at(i);
            bool bisDir = fileInfo.isDir();
            if(bisDir) {
    
    
                QZipWriterEx(writer,fileInfo.filePath(),layer);
            }
            else{
    
    
                QFile file(fileInfo.filePath());
                if (file.exists())
                {
    
    
                    file.open(QIODevice::ReadOnly);
                    QString  filename=file.fileName().replace(QApplication::applicationDirPath()+"/","");
                    //特别 处理
                    if(layer!="")
                    filename=filename.replace(layer,"");
                    writer->addFile(filename,file.readAll());
                }
                file.close();
            }
            i++;
        } while(i < list.size());
    }else {
    
    
        return false;
    }
    return true;
}

## 标题QZipWriter 

Guess you like

Origin blog.csdn.net/qq_15559927/article/details/114968848