Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.08.2011, 15:25   #1
Яр|/||< (^_^)
LosYear
Форумчанин
 
Аватар для Яр|/||< (^_^)
 
Регистрация: 19.06.2009
Сообщений: 695
По умолчанию [QT] Архивирование файлов zip

Всем привет! Нужна помощь с QT. Начал на нем кодить. Дошел до более-менее серьезной проги. Там требуется сжатие файлов, находящийся в папке tmp, которая лежит в директории проги. Она создается программой во время выполнения. Когда пользователь скажем жмет на кнопку, происходит код. Архивация сделана на quaZip. Но к сожалению данный отрывок не работает. Кто может подсказать, почему?
Код:
...

    // Compressing Zip with QuaZip

    QFileDialog* saveDialog = new QFileDialog;
    QString fileName;
    fileName = saveDialog->getSaveFileName(this,QString::fromLocal8Bit("Выберите имя файла"),"/",QString::fromLocal8Bit("Zip(*.zip)"));

    QFile zipFile(fileName);
    QuaZip zip(&zipFile);

    if(!zip.open(QuaZip::mdCreate)) {
      qWarning("testCreate(): zip.open(): %d", zip.getZipError());
      return;
    }

    QDir tmpDir( QCoreApplication::applicationDirPath() + "/tmp");
    QFileInfoList files = tmpDir.entryInfoList();
    QFile inFile;
    QuaZipFile outFile(&zip);
    char c;

    foreach (QFileInfo file, files) {
        inFile.setFileName(file.fileName());
        if( !inFile.open(QIODevice::ReadOnly)){
            qWarning("testCreate(): inFile.open(): %s", inFile.errorString().toLocal8Bit().constData());

        }
        if( !outFile.open(QIODevice::WriteOnly, QuaZipNewInfo(inFile.fileName(),inFile.fileName()))){
            qWarning("testCreate(): outFile.open(): %d", outFile.getZipError());

        }
        qint64 len = file.size();
        qint64 pos = 0;
        while ( inFile.getChar(&c) && outFile.putChar(c) ){
            char buf[4096];
            qint64 l = inFile.read(buf,4096);
            if( l < 0 ){
                qWarning("read(): %s", inFile.errorString().toUtf8().constData());

            }
            if ( l == 0 )

            if ( outFile.write(buf,1) != l){
                qWarning("write(): %d", outFile.getZipError());

            }
            pos += 1;
            if ( pos % 1048576 == 0){
                qDebug("%.1f", (float) pos / len * 100.0f);
            }

        }
        if (outFile.getZipError() != UNZ_OK){
            qWarning("testCreate(): outFile.putChar(): %d", outFile.getZipError());

        }
        outFile.close();
        if ( outFile.getZipError()!= UNZ_OK ){
            qWarning("testCreate(): outFile.close(): %d", outFile.getZipError());

        }
        inFile.close();

    }
    zip.close();
    if ( zip.getZipError() != 0){
       qWarning("testCreate(): zip.close(): %d", zip.getZipError());
       return;
    }
...
Заранее спасибо!
p.s : создается пустой архив, со списком файлов. в папке tmp все файлы нормальные.
Яр|/||< (^_^) вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Повершелл архивирование файлов Ramzeskz Помощь студентам 0 07.07.2010 13:44
Архивирование файлов Altera Общие вопросы Delphi 1 08.06.2010 20:35
архивирование файлов через shell eda Microsoft Office Excel 8 14.07.2009 09:46
Архивирование выбранных файлов и запись на диск rombler69 Общие вопросы Delphi 0 16.06.2009 21:08
архивирование файлов .txt Brook Компоненты Delphi 7 03.06.2009 11:35