Отменить создание ZIP-архива

Может случиться так, что вы захотите отменить создание zip-архива по разным причинам. Это просто может занять слишком много времени, или вам действительно не нужны некоторые записи.

Обзор

Существует класс EventsBag, который является контейнером для событий, связанных с архивом. Теперь он поддерживает одно событие — EntryCompressed. Он возникает после сжатия записи архива и может быть отменен.

Отмена создания длинного архива

Допустим, вы хотите, чтобы ваш ZIP-архив был составлен примерно за минуту. После того как какая-то запись была сжата, проверьте время, прошедшее с начала сжатия, и если оно заняло больше минуты, отмените процесс. В архиве результатов уже были бы сжаты записи, включая ту, которая вызвала событие.

Шаги: Отмена создания длинных архивов в C#</ сильный>

  1. Инициализируйте новый объект «Архив» для обработки сжатия.
  2. Запустите секундомер, чтобы отслеживать продолжительность процесса сжатия.
  3. Создайте записи архива из каталога с помощью метода CreateEntries, указав папку для сжатия.
  4. Настройте EventsBag для обработки событий сжатия.
  5. Прикрепите обработчик события EntryCompressed, который проверяет, превышает ли прошедшее время одну минуту, и при необходимости отменяет операцию.
  6. Запустите секундомер и приступайте к сохранению архива, передав EventsBag в ArchiveSaveOptions.
 1    using (var archive = new Archive())
 2    {
 3        Stopwatch sw = new Stopwatch();
 4                                
 5        archive.CreateEntries(@"D:\BigFolder");
 6        EventsBag eb = new EventsBag();
 7        eb.EntryCompressed += delegate(object sender, CancelEntryEventArgs args)
 8            {
 9            if (sw.Elapsed > TimeSpan.FromSeconds(60))
10                args.Cancel = true;
11            };
12        sw.Start();
13        archive.Save("output.zip", new ArchiveSaveOptions() { EventsBag = eb });
14    }

Отмена после определенного входа

Если вы хотите отменить сжатие определенной записи, используйте следующий фрагмент:

Шаги: отмена создания архива после внесения определенной записи сжат в C#

  1. Инициализируйте новый объект «Архив» для обработки сжатия.
  2. Используйте метод CreateEntries для добавления файлов из указанного каталога.
  3. Настройте EventsBag для управления событиями сжатия.
  4. Прикрепите обработчик события EntryCompressed, который проверяет, соответствует ли сжимаемая запись определенному имени файла (например, «last.bin»).
  5. Если целевая запись найдена, инициируйте отмену.
  6. Сохраните архив с «EventsBag», включенным в «ArchiveSaveOptions».
 1    using (var archive = new Archive())
 2    {                          
 3        archive.CreateEntries(@"D:\BigFolder");
 4        EventsBag eb = new EventsBag();
 5        eb.EntryCompressed += delegate(object sender, CancelEntryEventArgs args)
 6            {
 7            if (args.Entry.Name == @"BigFolder\last.bin")
 8                args.Cancel = true;
 9            };      
10        archive.Save("output.zip", new ArchiveSaveOptions() { EventsBag = eb });
11    }
Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.