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}
Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.