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}