0 / 0 / 0
Регистрация: 18.03.2015
Сообщений: 15
1

Распаковка ZiP-архива с заменой файлов

13.04.2015, 13:26. Показов 5391. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Нигде нет толкового ответа про эту тему. Как извлечь, скажем, с помощью стандартной библиотеки, архив zip так, чтобы при извлечении заменялись файлы, которые есть в архиве. По сути создаю инсталлятор. И если распаковывать через обычную команду (ZipFile.ExtractToDirectory("data.zip", direc), то при совпадении имён извлекаемого файла и того, что лежит в директории распаковки, программа крэшится. Как быть? Может через foreach можно это реализовать? Подскажите, пожалуйста!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.04.2015, 13:26
Ответы с готовыми решениями:

Распаковка ZIP-архива с заменой файлов
Здравствуйте мне нужно распаковать zip заменой файлов, я делал так:...

Распаковка архива с заменой файлов
Здравствуйте мне нужно распаковать zip заменой файлов, я делал так: ...

Извлечение файлов из архива ZIP
Привет друзья ! Возникла необходимость загружать файл из интернета (он в формате ZIP) и делать...

Загрузка и распаковка zip
Здравствуйте, как сделать так чтобы загруженный файл сразу распаковался. Файл загружается, но не...

6
26 / 26 / 29
Регистрация: 11.02.2012
Сообщений: 101
13.04.2015, 13:57 2
https://msdn.microsoft.com/ru-... 10%29.aspx
Подойдет?
0
0 / 0 / 0
Регистрация: 18.03.2015
Сообщений: 15
13.04.2015, 15:52  [ТС] 3
Благодарю, но там к сожалению в примере немного не то, что надо.
C#
1
2
3
4
5
6
7
 foreach (ZipArchiveEntry entry in archive.Entries)
                {
                    if (entry.FullName.EndsWith(".txt", StringComparison.OrdinalIgnoreCase))
                    {
                        entry.ExtractToFile(Path.Combine(extractPath, entry.FullName), true);
                    }
                }
Как сделать здесь, чтобы не учитывал форматы(а то все форматы с ума сойдёшь прописывать), а чтобы если совпадение, то замена.
0
26 / 26 / 29
Регистрация: 11.02.2012
Сообщений: 101
14.04.2015, 01:10 4
if строку вообще выброси, файлы из архива и в каталоге имеют одинаковые имена.
0
0 / 0 / 0
Регистрация: 18.03.2015
Сообщений: 15
14.04.2015, 08:32  [ТС] 5
Если оставить так:

C#
1
2
3
4
            foreach (ZipArchiveEntry entry in archive.Entries)
            {
                    entry.ExtractToFile(Path.Combine(path, entry.FullName), true);
            }
то: "Необработанное исключение типа "System.IO.IOException" в mscorlib.dll
Дополнительные сведения: Синтаксическая ошибка в имени файла, имени папки или метке тома."
0
26 / 26 / 29
Регистрация: 11.02.2012
Сообщений: 101
14.04.2015, 12:39 6
Bengamin,
При возникновении ошибки посмотри, значение Path.Combine(path, entry.FullName). Это имя файла с полным путем. И разберись почему такое имя невозможно и вызывает ошибку.
0
0 / 0 / 0
Регистрация: 18.03.2015
Сообщений: 15
14.04.2015, 13:05  [ТС] 7
Это понятно, просто он либо распаковывает файлы, которые есть в директории и пытается из заменить, либо остальное не распаковывает, т.к. этих файлов просто нет. В общем, нужно создать типичную распаковку с заменой, как делается в инсталляторах.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.04.2015, 13:05
Помогаю со студенческими работами здесь

Распаковка архива в поток
В ресурсах находится ZIP архив (в нем xml), пытаюсь извлечь его в поток что бы загрузить...

Распаковка rar архива
Ребята уже впал в ступор, не знаю как сделать распаковку rar архива в определённую папку....

Скачивание zip файла и распаковка
Всем привет!Возникла проблема:делаю лаунчер для minecraft'a и необходимо сделать скачивание zip...

SevenZipSharp.dll распаковка архива
Вот так не получается: using (var extr = new...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru