Отменить создание архива Zip

Это может произойти, вы хотите отменить создание архива Zip по разным причинам. Это может занять слишком много времени, или вам на самом деле не нужны записи.

Обзор

Существует класс Eventsbag, который представляют собой контейнер для событий, связанных с архивом. Теперь он поддерживает одно событие - intryCompressed ( GetEntryCompressed/ setentryCompressed). Это поднимается после того, как вход архива был сжат, и отменяется.

Отмена длинного создания архива

Допустим, вы хотите, чтобы ваш Zip Archive был составлен примерно через минуту. После того, как какая -то запись была сжата, проверьте время с начала сжатия, и если это заняло более минуты, отмените процесс. Результат архив уже сжал бы записи, в том числе триггггрировал событие.

 1Попробуйте (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}

Отмена после определенной записи

Если вы хотите отменить после того, как конкретная запись была сжата. Использование после фрагмента:

 1Попробуйте (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 ("output.zip", опции);
12}
Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.