.NET 4.x Распаковка ZIP архива / DotNetZip - C#

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток уважаемые! Столкнулся с казалось бы, элементарной задачей:

распаковать ZIP архив в указанную папку

, отображая процесс распаковки в прогресс-баре. Почитал форум, почитал гугл... Скачал DotNetZlib, и всё казалось бы хорошо, но пример "распаковки с прогрессбаром" с их сайта помимо того, что в оригинале своём не работоспособен (изначально) - после корректировки, данный пример отображает прогресс распаковки файлов в их количественном составе, что не есть хорошо. Предположим, в архиве 2 файла, 1 файл на 500Мб, второй на 10. Прогрессбар подобной распаковки, выглядит, мягко говоря, абсурдно. А если в архиве 1 большой файл, то как такового прогрессбара можно сказать вообще нет и складывается впечатление, что программа зависла, что так же не хорошо. Собственно, вопрос: можно ли как-то отображать не кол-во файлов "Распаковано/Всего", а именно сам прогресс распаковки? Лет 10 назад я помню писал архиватор на Си и прогрессбар вычислялся из общего размера архива с шагом равным размеру буфера. Можно как-то добиться подобного от этой библиотеки? Ещё я заметил, что библиотека не дружит с русскими именами (в данный момент не принципиально, но не приятно). Или, возможно есть какая-то другая библиотека, более оптимально подходящая для данной задачи? И... возможно кто-то уже сталкивался с подобным вопросом при работе с DotNetZip
file.Extract(string path, Options);
Это прототип функции для распаковки файла. Можно как-то узнать, по какому пути относительно архива этот файл располагается, до того, как мы будем его распаковывать? Благодарю за внимание!
P.S. Нашел класс ZipFile в .NET 4.5+. Подскажите пожалуйста, правильно ли я понял, что он умеет только "просто паковать/распаковывать" файлы, аля утилита командной строки, без каких либо доп. опций и отображения прогресса?

Решение задачи: «.NET 4.x Распаковка ZIP архива / DotNetZip»

textual
Листинг программы
ZipArchiveEntry - класс

Тип ZipArchiveEntry предоставляет следующие члены.

Свойства

Archive -	Получает ZIP-архив, к которому принадлежит запись.
CompressedLength - Получает сжатый размер записи в ZIP-архиве.
FullName - Получает относительный путь записи в ZIP-архиве.
LastWriteTime - Получает или задает время последнего изменения записи в ZIP-архиве.
Length - Получает несжатый размер записи в ZIP-архиве.
Name - Получает имя файла записи в ZIP-архиве.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.125 из 5