Coder Social home page Coder Social logo

dushibaiyu / qlib7z Goto Github PK

View Code? Open in Web Editor NEW
62.0 7.0 35.0 595 KB

Qt封装的7Zsdk,对7z格式进行压缩解压。

Home Page: http://www.dushibaiyu.com/2015/03/qlib7z-qt-7z.html

License: GNU Lesser General Public License v2.1

QMake 0.57% C 29.32% C++ 70.08% Prolog 0.02%

qlib7z's Introduction

QLib7z

QLib7z 是从Qt Installer Framework中提取出来的7Z SDK的Qt封装,有压缩,解压,多线程job等。

========= 编译需要Qt 5 + (个人测试在Qt 5.4下。) 系统需求:win,linux,等、、、

========= 注意: 使用需要先调用Lib7z::init()初始化。 test下有qlib7ztest的例子可以工作的。 只测试支持*.7z格式。*.zip测试未通过。 其他格式如果您需要请自己测试下。 只在win下测试,请他平台请先测试后使用。

如果是静态编译,需要再src.pro文件里加上:DEFINES += QLIB7Z_NOLIB

zip压缩解压请参见QuaZip:http://quazip.sourceforge.net/

qlib7z's People

Contributors

dushibaiyu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

qlib7z's Issues

QLib7z生成的7z有问题,也无法解压.

我写了个小程序测试,但怎么弄都有问题.
on_pushButton_clicked()是压缩1.dat和2.dat生成7z的,生成的文件基本就320Kb,但用7-zip压缩出来的7z文件有1.1Mb.
on_pushButton_2_clicked()是解压1.dat到G:/senwu/list/2/的,但解压on_pushButton_clicked()生成的7z会抛出异常(Lib7z::isSupportedArchive返回false),而解压7-zip压缩的会在G:/senwu/list/2/生成一个空文件1.dat.

目录结构:
G:/senwu/list/
├── 1.dat
├── 2 (文件夹)
├── 2.dat
└── a.7z
7-zip生成的压缩文件的目录结构:
a.7z
├── 1.dat
└── 2.dat

下面是代码:

mainwindow.cpp

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    Lib7z::init();
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{
    QFile *a = new QFile("G:/senwu/list/a.7z");
    a->open(QIODevice::ReadWrite);
    QStringList string_list;
    string_list.append("G:/senwu/list/1.dat");
    string_list.append("G:/senwu/list/2.dat");
    qDebug()<<Lib7z::isSupportedArchive(a);
    Lib7z::createArchive(a,string_list);

}

void MainWindow::on_pushButton_2_clicked()
{
    QFile *a = new QFile("G:/senwu/list/a.7z");
    a->open(QIODevice::ReadOnly);
    qDebug()<<Lib7z::isSupportedArchive(a);
    Lib7z::File c;
    c.path = "1.dat";
    QString targetDirectory = "G:/senwu/list/2/";
    Lib7z::extractFileFromArchive(a,c,targetDirectory);

}

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include "QLib7z_global.h"
#include "init.h"
#include "lib7z_facade.h"
#include <QFileInfo>
#include <QDirIterator>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
private slots:
    void on_pushButton_clicked();

    void on_pushButton_2_clicked();

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

qlib7z_test.pro

QT       += core gui

include($$PWD/QLib7z/7zip/7zip.pri)

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = qlib7z_test
TEMPLATE = app


SOURCES += main.cpp\
        mainwindow.cpp

HEADERS  += mainwindow.h

FORMS    += mainwindow.ui

unix|win32: LIBS += -L$$PWD/QLib7z/lib/ -lQLib7z.dll

INCLUDEPATH += $$PWD/QLib7z/include
DEPENDPATH += $$PWD/QLib7z/include

unix|win32: LIBS += -L$$PWD/QLib7z/lib/ -l7z

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.