Annuler la cr�ation d'une archive ZIP

Il peut arriver que vous souhaitiez annuler la cr�ation d’une archive ZIP pour diverses raisons. Cela prend trop de temps ou vous n’avez pas besoin de certaines entr�es.

Vue d’ensemble

Il existe une classe EventsBag qui contient les �v�nements li�s � l’archivage. Elle supporte maintenant un �v�nement - EntryCompressed ( getEntryCompressed/ setEntryCompressed). Il se d�clenche lorsqu’une entr�e d’archive a �t� compress�e, et il peut �tre annul�.

Annulation de la cr�ation d’une archive longue

Supposons que vous souhaitiez que votre archive ZIP soit compos�e en une minute environ. Apr�s 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 r�sultante contiendra des entr�es d�j� compress�es, y compris celle qui a d�clench� l’�v�nement.

 1try (Archive archive = new Archive()) {
 2    archive.createEntries("D:\NBigFolder") ;
 3    EventsBag eb = nouveau EventsBag() ;
 4
 5    Instant starts = Instant.now();
 6
 7    eb.setEntryCompressed((sender, args) -> {
 8        if (starts.plusSeconds(60).isBefore(Instant.now()))
 9            args.setCancel(true);
10    });
11    ArchiveSaveOptions options = new ArchiveSaveOptions();
12    options.setEventsBag(eb);
13    archive.save("output.zip", options);
14}

Annulation apr�s une certaine entr�e

Si vous voulez annuler apr�s qu’une entr�e particuli�re ait �t� compress�e, utilisez l’extrait suivant :

 1try (Archive archive = new Archive()) {
 2    archive.createEntries("D:\NBigFolder") ;
 3    EventsBag eb = nouveau EventsBag() ;
 4    eb.setEntryCompressed((sender, args) -> {
 5        System.out.println(args.getEntry().getName()) ;
 6        if (args.getEntry().getName().equals("BigFolder\last.bin"))
 7            args.setCancel(true) ;
 8    }) ;
 9    ArchiveSaveOptions options = new ArchiveSaveOptions() ;
10    options.setEventsBag(eb) ;
11    archive.save("output.zip", options) ;
12}
Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.