1. Учитывая приведенный ниже код и большое количество файлов в архиве, следует ли мне сжимать каждый файл по мере его добавления в zip-файл?
Принцип работы DotNetZip заключается в сжатии каждого файла при его добавлении в архив.Ваше приложение не должно делать сжатие.DotNetZip делает это для вас.
или метод Adddirectory должен обеспечивать примерно такое же сжатие?
Записи, добавленные в zip-файл с помощью метода AddDirectory (), проходят по тому же пути кода, когда zipархив пишется, так как записи добавляются через AddFile ().Данные файла сжимаются, затем при желании шифруются, а затем записываются в zip-файл.
незапрошенный совет: вам не нужно делать:
zip.AddProgress += new EventHandler<AddProgressEventArgs>(Zip_AddProgress);
вы можете просто сделать:
zip.AddProgress += Zip_AddProgress;
как выопределить, что сжатие не происходит?
Если вас интересует сжатие каждой записи, вы можете зарегистрировать обработчик событий SaveProgress.Событие SaveProgress вызывается в разное время во время записи архива, в том числе когда начинается сохранение, когда DotNetZip начинает запись данных для одной записи, через различные промежутки времени во время записи одной записи, после завершения записи данных для каждой записи, ипосле окончания записи всех данных.Эти этапы и описаны в перечислении ZipProgressEventType .Когда EventType имеет значение Saving_AfterWriteEntry, вы можете рассчитать степень сжатия для данной записи.
Чтобы убедиться, что сжатие не происходит, я бы посоветовал вам зарегистрировать такое событие SaveProgress и посмотреть на эту степень сжатия.
Кроме того, как описано выше, некоторые типы файлов не могут быть сжаты.JPG, MPG, MP3, ZIP файлы и другие файлы не очень сжимаемы.
Наконец, сделать резервное копирование намного проще, если вы просто используете инструмент командной строки DotNetZip.Если все, что вы хотите сделать, это сделать резервную копию определенного каталога, вы можете использовать инструмент командной строки (zipit.exe) и избегать написания программы.С помощью инструмента zipit.exe, если вы используете опцию -v, инструмент печатает отчеты о ходе работы и отображает сжатие для каждой записи с помощью механизма, который я описал выше.Даже если вы предпочитаете писать свою собственную программу, вы можете рассмотреть возможность использования zipit.exe, чтобы проверить, происходит или нет сжатие при использовании DotNetZip.