C#, Работа с архивами

Столкнулся с вопросом. MSDN конечно штука хорошая и информативная, но данные классы как-то вяло отражены. Куча сносок мелким шрифтом, на которые внимания не обратишь. Потому решил описать своими словами. С более развернутым примером.

В .NET есть набор классов для работы с ZIP архивами.
ZipArchive — для доступа к архиву.
ZipArchiveEntry — для работы с отдельными записями(файлами) внутри архива.
В данном примере я взял часть от реального проекта. Выкинув все не относящееся к вопросу. В программе zip-архив (со своим расширением) используется для
хранения прошивок(обновлений) к устройству. В архивный файл кладутся и извлекаются ряд двоичных блоков (части прошивки) и текстовый файл «descr.txt»;

Для начала. Сборки содержащие эти классы автоматом не подключаются. Необходимо добавить ссылки на них в проект. Иначе будут видны только
классы доступа к gz — потоку. В обозревателе решений, в нашем проекте находим ветку «References». Кликаем по ней правой кнопкой и добавляем:
System.IO.Compression
и
System.IO.Compression.FileSystem
далее пишем код:

здесь, я при сохранении удаляю файл архива(предварительно сбекапив его в файл «старое имя».XXXXXXXX.backup где «старое имя» — старое имя файла, XXXXX — GUID совместимый код даты-времени) и создаю новый файл. На самом деле, можно было обновлять записи в файле. Но я не захотел проверять как это повлияет на файл архива, а так же писать код проверяющий есть ли соответствующая запись в архиве или ее нужно создавать.

Leave a Reply

Ваш e-mail не будет опубликован. Обязательные поля помечены *