Не могу открыть сжатый файл

0

Я пытаюсь сжать текстовый файл с QT:

QFile inFile("d:\\build\\Directories\\Debug\\files\\developer.txt");
bool open_file_result = inFile.open(QIODevice::ReadOnly);
QByteArray ba = inFile.readAll();

QFile file("d:\\build\\Directories\\Debug\\files\\developer.gz");
bool open_zip_result = file.open(QIODevice::WriteOnly);
QDataStream out(&file);
out << qCompress(ba);

file.close();

open_file_result и open_zip_result являются true. Я также могу видеть zip файл (он также имеет размер, например 50 КБ), но я не могу его открыть. Я получаю следующую ошибку:

Архив находится в неизвестном формате или поврежден.

Что я делаю не так? Если у вас есть лучший/другой способ сжать текстовый файл, скажите, пожалуйста!

  • 0
    Я ничего не знаю о QFile , но знаю, что Windows нуждается в вас, чтобы открывать такие вещи в binary режиме. Есть ли способ сделать это с QFile ?
  • 0
    Вероятно, qCompress просто сжимает указанные данные и не записывает заголовок файла gz. Вы должны открыть любой gz-файл и проверить его заголовок на наличие magic данных. И сравните с вашим сгенерированным.
Теги:
qt
zip

1 ответ

0
Лучший ответ

Существует разница между алгоритмом сжатия Zip и контейнером Zip. Вы смешиваете этих двух.

Вам нужно сделать некоторые исследования в формате контейнера Zip, которые помогут вам найти и извлечь заархивированный файл в контейнере Zip. Как только вы получите этот файл, вы можете применить qUncompress только к этому файлу.

Попробуйте взглянуть на QuaZip, который является библиотекой, написанной для этой цели.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню