вторник, 19 января 2016 г.

Работа в Qt с Zip файлами

Сегодня мы научимся работать с zip-архивами, используя почти родной класс QZipReader и QZipWriter. Напрямую их подключить не получится, но эти файлы есть в исходниках Qt в папке: \src\gui\text.

Копируем qzipreader_p.h и qzipwriter_p.h к себе в проект и добавляем их.
#include "qzipreader_p.h"
#include "qzipwriter_p.h"
view raw include.h hosted with ❤ by GitHub

Используя эти классы, работа с архивами становится такой же простой, как и работа с обычными файлами.
Чтение текстового файла внутри архива:
QString text;
QZipReader *zip("zip_file.zip", QIODevice::ReadOnly);
if (zip.status() == QZipReader::NoError)
{
QByteArray data = zip.fileData("text_file.txt");
QTextStream stream(&data);
text = stream.readAll();
zip.close();
}
view raw qzip_reader.cpp hosted with ❤ by GitHub
Получить список всех файлов можно так:
QList<QZipReader::FileInfo> file_list = zip.fileInfoList();
view raw qzip_list.cpp hosted with ❤ by GitHub

Создание архива:
QString text; //<-append some text in
QZipWriter *zip("zip_file.zip", QIODevice::WriteOnly);
if (zip.status() == QZipWriter::NoError)
{
QByteArray data;
QTextStream stream(&data);
stream << text;
stream.flush();
zip.addFile("text_file.txt", data);
zip.close();
}
view raw qzip_writer.cpp hosted with ❤ by GitHub

Пример программы, реализующей работу с архивом (чтение и запись текста), есть на моем гитхабе.

Комментариев нет:

Отправить комментарий