Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Gepar
1178 / 534 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
#1

Работа с zip - C++

15.09.2011, 20:39. Просмотров 1137. Ответов 6
Метки нет (Все метки)

Хотелось бы сделать мини обработчик zip архивов для своих нужд, который бы редактировал все zip архивы что найдёт в папке. Ну из возможностей нужна возможность редактирования txt файлов внутри zip архива и перепаковка архива (извлечение всех файлов из архива и создание нового архива с содержимым папки). Хотя может это я многого хочу, но всё же есть ли что простенькое в освоении и справляющееся с перечисленными мной задачами?

Добавлено через 1 час 22 минуты
Я в плане того чтобы была готовая библиотека или просто готовый чей пример, который можно было бы использовать в своём консольном приложении )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.09.2011, 20:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа с zip (C++):

Работа с zip-архивами. - C++
Есть что-нибудь с открытым кодом, для упаковки/распаковки zip-архивов? Обязательно чтобы поддерживало разные степени сжатия для файлов...

Работа с zip архивами - C++
Кто-нибудь знает хорошую библиотеку?

Работа с zip архивами (нужный порядок файлов) - C++
Всем доброго времени суток! Хочу сделать мини-программу для смены атрибутов эл. книг формата epub - автора, название etc. epub это...

Компиляция 7-zip - C++
добрый вечер! Подскажите, как компилировать 7-zip? Если можно поподробнее.

Распаковать zip архив - C++
Нужно распаковать все файлы из zip архива (или tar.gz). Подключил zlib. zip архив находится рядом с .exe файлом приложения. Не могу...

Создание ZIP архива - C++
Есть несколько xml файлов. Надо их засунуть в 1 архив. Есть-ли подходящая либа на плюсах? Про zlib знаю, но не очень бы хотелось писать...

6
sandye51
программист С++
685 / 587 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
15.09.2011, 21:42 #2
так что просто вызывай винрар через свою прогу и все)
0
Gepar
1178 / 534 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
15.09.2011, 23:15  [ТС] #3
sandye51, мм, а можно пример? Это я так понимаю вы намекаете на вызов его через system()? Такой вариант тоже подойдёт, но только я не хотел бы видеть кучу всплывающех окошек и переводов фокуса на винрар во время работы программы, есть ли возможность вызывать винрар и давать ему комманды на распаковку / упаковку в каком-нибудь silent режиме?
0
sandye51
программист С++
685 / 587 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
16.09.2011, 02:41 #4
не system, а CreateProcess
там и команду передать спокойно можно

snippet
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
size_t ExecuteProcess(std::string FullPathToExe, std::string Parameters, size_t millisecToWait) 
{ 
    size_t iMyCounter = 0, iReturnVal = 0, iPos = 0; 
    DWORD dwExitCode = 0; 
    std::string sTempStr = ""; 
 
    if (Parameters.size() != 0) 
    { 
        if (Parameters[0] != ' ') 
        { 
            Parameters.insert(0, " "); 
        } 
    } 
 
    sTempStr = FullPathToExe; 
    iPos = sTempStr.find_last_of("\\"); 
    sTempStr.erase(0, iPos +1); 
    Parameters = sTempStr.append(Parameters); 
 
    char * pwszParam = new char[Parameters.size() + 1]; 
    if (pwszParam == 0) 
    { 
        return 1; 
    } 
    const char* pchrTemp = Parameters.c_str(); 
    strcpy_s(pwszParam, Parameters.size() + 1, pchrTemp); 
 
    /* CreateProcess API initialization */ 
    STARTUPINFOA siStartupInfo; 
    PROCESS_INFORMATION piProcessInfo; 
    memset(&siStartupInfo, 0, sizeof(siStartupInfo)); 
    memset(&piProcessInfo, 0, sizeof(piProcessInfo)); 
    siStartupInfo.cb = sizeof(siStartupInfo); 
 
    if (CreateProcessA(FullPathToExe.c_str(), 
                            pwszParam, 0, 0, false, 
                            DETACHED_PROCESS, 0, 0, 
                            &siStartupInfo, &piProcessInfo) != false) 
    { 
         /* Watch the process. */ 
        dwExitCode = WaitForSingleObject(piProcessInfo.hProcess, millisecToWait); 
    } 
    else 
    { 
        /* CreateProcess failed */ 
        iReturnVal = GetLastError(); 
    } 
 
    /* Free memory */ 
    delete[]pwszParam; 
    pwszParam = 0; 
 
    /* Release handles */ 
    CloseHandle(piProcessInfo.hProcess); 
    CloseHandle(piProcessInfo.hThread); 
 
    return iReturnVal; 
}
0
Nameless One
Эксперт С++
5777 / 3427 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
16.09.2011, 05:31 #5
Цитата Сообщение от Gepar Посмотреть сообщение
но только я не хотел бы видеть кучу всплывающех окошек и переводов фокуса на винрар во время работы
он вроде может работать в консольном режиме, ЕМНИП.
А вообще есть свободные библиотеки для работы с zip-архивами, нужно только погуглить
0
odip
Эксперт С++
7159 / 3221 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
16.09.2011, 09:32 #6
Сдался тебе этот zip
Бери современную и бесплатную библиотеку - LZMA
http://www.7-zip.org/sdk.html
0
mimicria
return (true);
1958 / 1095 / 91
Регистрация: 19.04.2011
Сообщений: 2,345
16.09.2011, 09:45 #7
Или, к примеру, ZLib
0
16.09.2011, 09:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.09.2011, 09:45
Привет! Вот еще темы с ответами:

Помогите разобраться с zip архивами. - C++
Есть zip-архив, из него надо вытащить определенный файл, обработать его и запихнуть обратно, сохранив все остальные файлы. Если кому не...

Распаковка zip-архива средствами С++ - C++
Помогите считать из zip-архива файлы в кодировке Unicode (UTF-8). Долго копался в ресурсах на эту тему, но так и не нашел решения. Среди...

Создание архива rar/zip на C++ - C++
Народ, такая ситуация, мне необходимо создать архив rar или zip (желательно rar, запароленный) при помощи консольной программы на C++. ...

Zip запаковка\распаковка данных со смещением - C++
Воспользовавшись программой Offset file unzipper 0.3.6a узнал что у файла смещение(hex offset) = 3, windowBits=15. Теперь нужно как то...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.