170 похожих чатов

Подскажите, создал я зип архив и пробую с помощью minizip

разархивировать а там проблемы с доступом к файлам или чем-то. А если вручную архивировать winrar то код работает. Из-за каких свойств архива могут такие проблемы возникать? Нужно что где-то разрешить? Или из-за чего может быть такое с архивами?

8 ответов

17 просмотров

Если вы объясните, при чем тут с++, то, возможно, вас помогут

Покажи код

Till Schneider
Покажи код

Код создания архива или разархивирование?

Вот добавление файла в архив. Мне кажется я пропустил какое-то свойство которое не дает нормально разархивировать. void MainWindow::addFileToArchive(zipFile& archive, std::string path, std::string archSubFolder) { QFileInfo fileInfo(QString::fromStdString(path)); std::string str_path = (fileInfo.absolutePath()).toStdString(); std::string search_str = archSubFolder; std::size_t pos = str_path.find(search_str); std::string archPath = ""; if (pos != std::string::npos) { archPath = str_path.substr(pos); } const char* file_path = path.c_str(); const char* file_name = ((fileInfo.fileName()).toStdString()).c_str(); std::ifstream file(file_path, std::ios::binary); if (!file) { std::cerr << "Can't open archive " << file_path << " to read." << std::endl; return; } file.seekg(0, std::ios::end); const std::streampos file_size = file.tellg(); file.seekg(0, std::ios::beg); char* buffer = new char[file_size]; file.read(buffer, file_size); std::string copy_path = path; std::size_t pos2 = copy_path.find_last_of("/\\"); std::string filename = copy_path.substr(pos2 + 1); std::size_t dot_pos = filename.find_last_of("."); std::string name_without_extension = filename.substr(0, dot_pos); string archPathRes = archPath + "/" + transliterate(name_without_extension) + "." + (fileInfo.suffix()).toStdString(); zipOpenNewFileInZip(archive, archPathRes.c_str(), nullptr, nullptr, 0, nullptr, 0, nullptr, Z_DEFLATED, Z_DEFAULT_COMPRESSION); zipWriteInFileInZip(archive, buffer, static_cast<unsigned int>(file_size)); zipCloseFileInZip(archive); delete[] buffer; }

Скорее всего архив создается не в том месте в файловой системе. Что-то с путем, отладчиком или логами глянуть, че за путь получается. Ещё надо понимать, где процесс находится, если путь относительный, потому что если относительный, то архив создается/читается относительно текущего пути процесса

Виталик Шостак Шостак
Вот добавление файла в архив. Мне кажется я пропус...

const char* file_name инициализируется строкой, разрушающейся в той же строке

Похожие вопросы

Обсуждают сегодня

Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
я так понимаю, я так подозреваю, что создание такого плагина для человека, кто умеет писать плагины для делфи потребует минут 5-10 времени. но это мое подозрение. хотелось бы ...
Kraszx
7
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Коллеги, добрый вечер. Создаю коллекцию от TFPGMap, ключ - перечисление, значение - целое. Нужно отсортировать коллекцию по значению. Как это можно сделать?
Kirill Filippenok
11
Скажи а ты когда этот канал создавал ты уже дельфи не любил, или это со временем пришло?
Роман Лях (rgreat)
18
Привет, такой вопросик появился кажется ли вам что Rust слишком сложный/строгий для высокоуровневого программирования и слишком "безопасный"/строгий для низкоуровневого?
Крокант
10
Всем привет! Использую кастомное модальное диалоговое окошко, все по классике - mrOK, mrCancel как ModalResult. Однако есть нюанс - в главной форме есть универсальный обработч...
Олег Гранишевский
20
Карта сайта