Скасувати створення архіву 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.