Russian Qt Forum

Qt => Общие вопросы => Тема начата: merke от Июнь 28, 2011, 16:12



Название: Работа с zip
Отправлено: merke от Июнь 28, 2011, 16:12
Ребят, всем привет!

Очень нужно заархивировать файлы в zip архив. Помогите какие готовые либы использовать?


Название: Re: Работа с zip
Отправлено: Пантер от Июнь 28, 2011, 16:23
В поиск. На днях как раз поднималась данная тема.


Название: Re: Работа с zip
Отправлено: NortT от Июнь 28, 2011, 17:31
Сначала я http://code.google.com/p/osdab (http://code.google.com/p/osdab) использовал, сейчас QZip. На несколько тем ниже есть обсуждение Qzip'a/


Название: Re: Работа с zip
Отправлено: merke от Июнь 28, 2011, 18:09
В .pro файле прописал INCLUDEPATH += %QTDIR%/src/gui/text

Добавил инклуды

#include "qzipwriter_p.h"
#include <qzip.cpp>

Выдает ошибку C:\Qt\2010.05\qt\src\gui\text\qzip.cpp:54: ошибка: zlib.h: No such file or directory

Эт чтож zlib ещё таскать?


Название: Re: Работа с zip
Отправлено: merke от Июнь 28, 2011, 18:54
Вобщем решил проблема так:

pro файл:


Код
C++ (Qt)
#-------------------------------------------------
#
# Project created by QtCreator 2011-06-28T21:01:57
#
#-------------------------------------------------
 
QT       += core
 
QT       -= gui
 
INCLUDEPATH += $$[QT_INSTALL_PREFIX]/src/3rdparty/zlib
INCLUDEPATH += $(QTDIR)/src/gui/text
 
TARGET = ddd4
CONFIG   += console
CONFIG   -= app_bundle
 
TEMPLATE = app
 
 
SOURCES += main.cpp
 

main.cpp


Код
C++ (Qt)
#include <QtCore/QCoreApplication>
#include "qzipreader_p.h"
#include "qzipwriter_p.h"
#include <qzip.cpp>
#include <QFile>
 
int main(int argc, char *argv[])
{
   QCoreApplication a(argc, argv);
 
   QZipWriter zip("C:/file.zip"); // создаем файл
   //zip.addDirectory("directory"); // добавляется пустая папка в zip архив с именем directory
 
   //в созданную папку "directory" предыдущей командой мы добавляем файл file.ext.
   //При этом мы сами должны открыть файл file.ext через QFile, прочитать все содержимое и передать как QByteArray в эту функцию
 
   QFile file("C:/IMG_0239.JPG");
   file.open(QIODevice::ReadOnly);
   QByteArray myByteArray;
   myByteArray = file.readAll();
   zip.addFile("IMG_0239.JPG", myByteArray);
 
   QFile file2("C:/index.html");
   file2.open(QIODevice::ReadOnly);
   QByteArray myByteArray2;
   myByteArray2 = file2.readAll();
   zip.addFile("test.html", myByteArray2);
 
   zip.close();
 
   return a.exec();
}
 


Название: Re: Работа с zip
Отправлено: merke от Июнь 28, 2011, 18:55
И вопрос прога будет архивировать на других компах где не уставлен Qt?


Название: Re: Работа с zip
Отправлено: Whiplash от Июнь 29, 2011, 08:44
Я непосредственно zlib использую, про QZip не знал даже...
Будет архивировать, если zlib1.dll будешь с собой таскать.