Cancelar la creaci�n de un archivo ZIP
Puede ocurrir que desee cancelar la creaci�n de un archivo ZIP por varias razones. Simplemente puede tomar demasiado tiempo o que en realidad no necesita algunas entradas all�.
**Descripci�n general
Existe una clase
EventsBag que es contenedor de eventos relacionados con el archivo. Ahora soporta un evento - EntryCompressed (
getEntryCompressed/
setEntryCompressed). Se activa cuando se comprime una entrada del archivo y se puede cancelar.
Cancelaci�n de la creaci�n de un archivo largo
Digamos que quieres que tu archivo ZIP se componga en aproximadamente un minuto. Despu�s de comprimir alguna entrada, comprueba el tiempo transcurrido desde el inicio de la compresi�n y, si ha tardado m�s de un minuto, cancela el proceso. El archivo resultante tendr�a ya entradas comprimidas incluyendo la que provoc� el evento.
1try (Archive archive = new Archive()) {
2 archive.createEntries("D:\\\BigFolder");
3 EventsBag eb = new 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}Cancelaci�n tras cierta entrada
Si desea cancelar despu�s de que se haya comprimido una entrada determinada, utilice el siguiente fragmento:
1try (Archive archive = new Archive()) {
2 archive.createEntries("D:\\\BigFolder");
3 EventsBag eb = new 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("salida.zip", opciones);
12}