Annuler la création de l'archive ZIP

Il peut arriver que vous souhaitiez annuler la création d’une archive zip pour diverses raisons. Cela peut tout simplement prendre trop de temps ou vous n’avez pas réellement besoin de certaines entrées.

Aperçu

Il existe une classe EventsBag qui contient les événements liés aux archives. Désormais, il prend en charge un événement :  EntryCompressed. Il se déclenche après la compression d’une entrée d’archive et peut être annulé.

Annulation de la création d’archives longues

Disons que vous souhaitez que votre archive ZIP soit composée en une minute environ. Une fois qu’une entrée a été compressée, vérifiez le temps écoulé depuis le début de la compression et si cela a pris plus d’une minute, annulez le processus. L’archive des résultats aurait déjà compressé les entrées, y compris celle qui a déclenché l’événement.

Étapes : pour annuler la création d’archives longues en C#</ fort>

  1. Initialisez un nouvel objet Archive pour gérer la compression.
  2. Démarrez un chronomètre pour suivre la durée du processus de compression.
  3. Créez des entrées d’archive à partir d’un répertoire en utilisant la méthode CreateEntries, en spécifiant le dossier à compresser.
  4. Configurez un EventsBag pour gérer les événements de compression.
  5. Attachez un gestionnaire d’événements pour l’événement EntryCompressed, qui vérifie si le temps écoulé dépasse une minute et annule l’opération si nécessaire.
  6. Démarrez le chronomètre et procédez à la sauvegarde de l’archive, en passant le EventsBag dans les 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    }

Annulation après certaines entrées

Si vous souhaitez annuler après la compression d’une entrée particulière, utilisez l’extrait suivant :

Étapes : l’annulation de la création de l’archive après une entrée spécifique est compressé en C#

  1. Initialisez un nouvel objet Archive pour gérer la compression.
  2. Utilisez la méthode CreateEntries pour ajouter des fichiers à partir d’un répertoire spécifié.
  3. Configurez un EventsBag pour gérer les événements de compression.
  4. Attachez un gestionnaire d’événements pour l’événement EntryCompressed, qui vérifie si l’entrée en cours de compression correspond à un nom de fichier spécifique (par exemple, “last.bin”).
  5. Si l’entrée cible est trouvée, déclenchez l’annulation.
  6. Enregistrez l’archive avec le EventsBag inclus dans 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.