Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/56: Рейтинг темы: голосов - 56, средняя оценка - 4.63
1 / 1 / 1
Регистрация: 25.11.2013
Сообщений: 14

Упаковка и распаковка файлов (Zlib или любой другой способ)

29.11.2013, 01:05. Показов 11120. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, возникла такая проблема, немогу упаковать файл и распаковать, пытаюсь использовать Zlib, http://www.zlib.net/manual.html читал вот тут, но всё равно хоть и прочитал ничего не получается, Пытался сначало открыть файл как бинарный а потом записать с помощью gzwrite, но файл который был размером 7 метров(pdf) упаковался в архив 29 байт, не могу разобраться уже 3 дня, если можно приведите примеры упаковки и распоковки, буду очень признателен, помогите пожалуйста вот что пытался сделать
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include "zlib.h"
#include <iostream>
#include <fstream>
 
using namespace std;
 
void main()
{
    ifstream in("d:\\10.pdf", ios::in | ios::binary);
    if (!in)
    {
        cout << "Cannot open file" << endl;
        return;
    }
 
    gzFile fi = gzopen("d:\\file.gz","wb");
    gzwrite(fi, in ,strlen("my decompressed data"));
 
    in.close();
    gzclose(fi);
 
    getchar();
 
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.11.2013, 01:05
Ответы с готовыми решениями:

Распаковка и упаковка файлов
нужно написать прогу для распаковки и упаковки текстового документа на Паскале АБС

Упаковка/распаковка exe файлов
Поясняю так. Программой 7-zip можно распаковать файл на отдельно манифесты, версии, иконки, ресурсы... Есть ли такие решения написанные...

Что дешевле, упаковка в object и распаковка, или приведение чисел к строке и обратно?
Есть задача сделать метод у которого может быть разное количество входных параметров, это требуется для сетевого сообщения, для этого как...

6
48 / 48 / 24
Регистрация: 29.10.2011
Сообщений: 154
29.11.2013, 01:54
Попробуйте libzip. Он удобней http://www.nih.at/libzip/ .
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <zip.h>
 
int main()
{
    //Open the ZIP archive
    int err = 0;
    zip *z = zip_open("foo.zip", 0, &err);
 
    //Search for the file of given name
    const char *name = "file.txt";
    struct zip_stat st;
    zip_stat_init(&st);
    zip_stat(z, name, 0, &st);
 
    //Alloc memory for its uncompressed contents
    char *contents = new char[st.size];
 
    //Read the compressed file
    zip_file *f = zip_fopen(z, "file.txt", 0);
    zip_fread(f, contents, st.size);
    zip_fclose(f);
 
    //And close the archive
    zip_close(z);
}
Добавлено через 5 минут
И еще, можете попробовать snappy http://code.google.com/p/snappy/ и LZMA http://www.7-zip.org/sdk.html
0
1 / 1 / 1
Регистрация: 25.11.2013
Сообщений: 14
29.11.2013, 02:29  [ТС]
Скачал Libzip, подключил но при компиляци выдаёт ошибки:
IntelliSense: identifier "uint8_t" is undefined
IntelliSense: identifier "uint64_t" is undefined
IntelliSense: identifier "uint32_t" is undefined
IntelliSense: identifier "uint16_t" is undefined
IntelliSense: identifier "int8_t" is undefined
IntelliSense: identifier "int64_t" is undefined
IntelliSense: identifier "int32_t" is undefined
IntelliSense: identifier "int16_t" is undefined
IntelliSense: cannot open source file "inttypes.h"
Error 1 error C1083: Cannot open include file: 'inttypes.h': No such file or directory

Думаю что не правильно подключил, хотя #include "zip.h" не подчёркивает, как же всё таки правильно подключить?
0
48 / 48 / 24
Регистрация: 29.10.2011
Сообщений: 154
29.11.2013, 02:41
Эм...
1) Качаете Cmake http://www.cmake.org/
2) Качаете исходники Zlib
3) Качаете исходники libZip
4) Конфигурируете проект через Cmake для Zlib
5) Компилируете zlib в static билд
6) Конфигурируете проект для libzip через Cmake
7) Компилируете проект libzip.
На этом этапе должны получиться файлы *.lib *.dll (где *. Название того, что получится в результате п. 7).
Далее в VS в настройках проекта C++ =>General=> Additional Include directories пишите путь до *.h файлов.
Далее Linker=>General=> Additional Include directories путь до .lib файлов.
Далее Linker=>Input=>Additional dependencies в конец дописываете .lib файлы.
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
29.11.2013, 10:22
Вдумайся в то что у тебя написано в 17-й строке и поймешь почему архив получается размером 29 байт.
1
0 / 0 / 0
Регистрация: 11.03.2014
Сообщений: 22
04.04.2014, 13:28
подниму тему
есть Builder 6, полный путь до архива zip, надо из него извлечь конкретный файл xml, который потом парсить. Извлечь xml хотелось бы в поток, а не во временный файл. Подключила zlib
C++
1
2
#include "zlib.h"
#pragma comment (lib, "zlib.lib")
а что дальше делать не знаю, пример на сайте http://www.zlib.net/zlib_how.html мне что-то не помогают.

Буду очень благодарна за пример кода на Builder 6


Пример выше от YouDoItWrong про libzip вроде довольно внятный, но не смогла подключить libzip. Так что за пошаговую инструкцию по его подключению буду тоже очень благодарна.
0
0 / 0 / 0
Регистрация: 03.10.2016
Сообщений: 2
03.10.2016, 16:46
Цитата Сообщение от YouDoItWrong Посмотреть сообщение
1) Качаете Cmake http://www.cmake.org/
2) Качаете исходники Zlib
3) Качаете исходники libZip
4) Конфигурируете проект через Cmake для Zlib
5) Компилируете zlib в static билд
6) Конфигурируете проект для libzip через Cmake
7) Компилируете проект libzip.
На этом этапе должны получиться файлы *.lib *.dll (где *. Название того, что получится в результате п. 7).
Далее в VS в настройках проекта C++ =>General=> Additional Include directories пишите путь до *.h файлов.
Далее Linker=>General=> Additional Include directories путь до .lib файлов.
Далее Linker=>Input=>Additional dependencies в конец дописываете .lib файлы.
Спасибо! Проект скомпилировался работает (в дополнение использовал инструкцию отсюда).
Правда, при запуске приложение требует две библиотеки: zip.dll и zlib.dll. В связи с этим вопрос: как откомпилировать, чтобы было статически (параметр /MT установлен)?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.10.2016, 16:46
Помогаю со студенческими работами здесь

Запаковка\Распаковка массива байт (Zlib)
Всем привет, появилась проблема. Имееться код на шарпе public static byte deflate(byte buffer) { ...

Упаковка и распаковка
Задачи: 1. Создать структуру с двумя полями и методами: ввода и вывода. 2. Создать еще один класс, у которого сделать два поля: 2...

Упаковка и распаковка
В object можно загнать все что угодно, но как получить обратно? Например запаковать тип byte и затем обратно byte b = { 1, 2, 3, 4,...

Упаковка и распаковка даты.
Добрый день. Помогите найти ошибку. А она заключается в том, что число в битовом представлении в сдвиге, получаеться совсем другое, нежели...

'Упаковка' и 'Распаковка' строки
Нужно составить две функции которые будут упаковывать\распаковывать строку Упаковка 'AAAAAAAABBBBBBBBCCCCDG' = '8A8B4CDG' Распаковка...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru