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}