圧縮の進行状況を報告します

進捗イベントハンドラー

特にデータサイズが巨大な場合、圧縮プロセスには長い時間がかかる場合があります。 zipアーカイブの場合、「compressionprogressed」イベント( getCompressionProgressprogress/ setCompressionprogressed)があります。このイベントは、これまでに進行したバイトの数を含む ProgressEventargsに依存しています。 これは、 lambda expressionを使用してこのイベントを購読する方法です。

1entry.setCompressionProgressed((senderargs) - > {
2    System.out.println(args.getProceedBytes() + "Bytes圧縮");
3});

zipの進行状況率のレポート

「Compression -Progrogress」イベントが発生するたびに、「ProceedBytes」数を元のファイルの長さで除算します。そのため、現時点で圧縮バイトの比率が見つかります。これが完全なサンプルです。

 1ファイルsource = new file( "gage.bin");
 2try(archive archive = new archive()){
 3    ArchiveEntry entry = archive.createentry( "Mage.bin"、​​source);
 4    final int []パーセントready = new int [1];
 5    entry.setCompressionProgressed((senderargs) - > {
 6        intパーセント=(int)((100 *(long)args.getProceedBytes()) / source.length());
 7        if(パーセント>パーセント準備[0])
 8        {
 9            System.out.println(パーセント + "%圧縮");
10            PercentReady [0] =パーセント;
11        }
12    });
13    archive.save( "output.zip");
14}

7zの進行状況パーセンテージのレポート

同様のアプローチは、7Zアーカイブの場合です。そのエントリには、イベントを取得して設定するための独自の方法があります( getCompressionProgressed/ SetCompressionProgressed)

 1ファイルsource = new file( "gage.bin");
 2try(sevenziparchive archive = new SevenZiparchive(new SevenZipentrySettings(new SevenZiplzma2CompressIonsettings())){
 3    SevenziparchiveEntry entry = archive.createentry( "gage.bin"、​​source);
 4    final int []パーセントready = new int [1];
 5    entry.setCompressionProgressed((senderargs) - > {
 6        //送信者はSevenziparchiveentryです
 7        intパーセント=(int)((100 *(long)args.getProceedBytes()) / source.length());
 8        if(パーセント>パーセント準備[0])
 9        {
10            System.out.println(パーセント + "%圧縮");
11            PercentReady [0] =パーセント;
12        }
13    });
14    archive.save( "output.zip");
15}
Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.