zipアーカイブ作成をキャンセルします
Contents
[
Hide
Show
]さまざまな理由でzipアーカイブの作成をキャンセルしたい場合があります。時間がかかりすぎるか、実際にそこにいくつかのエントリを必要としません。
概要
アーカイブ関連のイベント用のコンテナである
EventsBagクラスがあります。今、それは1つのイベントをサポートしています - Entry Compressed
(
getEntryCompressed/
setentryCompressed)。アーカイブエントリが圧縮された後に上昇し、キャンセル可能です。
長いアーカイブ作成のキャンセル
ZIPアーカイブを約1分で構成したいとしましょう。 いくつかのエントリが圧縮された後、圧縮の開始から取られた時間をチェックし、1分以上かかった場合はプロセスをキャンセルします。結果のアーカイブは、イベントをトリグ化したものを含む、すでに圧縮されたエントリを持っていました。
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}
特定のエントリ後にキャンセル
特定のエントリがスニペット後に圧縮された後にキャンセルしたい場合:
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( "output.zip"、options);
12}