Erstellung eines ZIP-Archivs abbrechen

Es kann vorkommen, dass Sie die Erstellung von ZIP-Archiven aus verschiedenen Gründen abbrechen möchten. Es kann einfach zu lange dauern oder Sie brauchen einige Einträge dort gar nicht.

Übersicht

Es gibt eine EventsBag Klasse, die Container für archivbezogene Ereignisse sind. Jetzt unterstützt sie ein Ereignis - EntryCompressed ( getEntryCompressed/ setEntryCompressed). Es wird ausgelöst, nachdem ein Archiveintrag komprimiert wurde, und es kann abgebrochen werden.

Abbruch der Erstellung eines langen Archivs

Angenommen, Sie möchten, dass Ihr ZIP-Archiv in etwa einer Minute erstellt wird. Nachdem ein Eintrag komprimiert wurde, überprüfen Sie die Zeit, die seit Beginn der Komprimierung verstrichen ist, und brechen Sie den Vorgang ab, wenn er länger als eine Minute gedauert hat. Das Ergebnisarchiv würde bereits komprimierte Einträge enthalten, einschließlich des Eintrags, der das Ereignis ausgelöst hat.

 1try (Archiv 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}

Abbruch nach bestimmter Eingabe

Wenn Sie den Vorgang abbrechen möchten, nachdem ein bestimmter Eintrag komprimiert wurde, verwenden Sie das folgende Snippet:

 1try (Archiv archive = new Archive()) {
 2    archive.createEntries("D:\\BigFolder");
 3    EventsBag eb = new EventsBag();
 4    eb.setEntryCompressed((Absender, 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.