圧縮の進行状況を報告する

進行状況イベント ハンドラー

特にデータサイズが大きい場合、圧縮プロセスに時間がかかることがあります。 zip アーカイブの場合、投稿を維持するための CompressionProgressed イベント があります。このイベントは、これまでに進行したバイト数を含む ProgressEventArgs に依存します。 これは、 ラムダ式 を使用してこのイベントをサブスクライブする方法です。

1   エントリ.CompressionProgressed += (s, e) => { 
2      Console.WriteLine(string.Format("{0} バイト圧縮", e.ProceededBytes)); 
3   };

Zip 進捗率のレポート

CompressionProgressed イベントが発生するたびに、ProceededBytes の数値を元のファイルの長さで割ります。このようにして、現時点での圧縮バイトの比率を求めます。ここに完全なサンプルがあります。

手順: C# で Zip の進捗率をレポートする

  1. File.Open を使用して huge.bin ファイルを読み取りモードで開き、圧縮の準備をします。
  2. 圧縮に PPMdCompressionSettings を指定して、Archive クラスの新しいインスタンスを初期化します。
  3. CreateEntry メソッドを使用して huge.bin ファイルのアーカイブ エントリを作成し、ソース ファイル ストリームにリンクします。
  4. イベント ハンドラーを CompressionProgressed イベントにアタッチして、圧縮の進行状況を監視します。これまでに圧縮されたファイルの割合を計算します。
  5. イベント ハンドラー内で圧縮パーセンテージを更新し、進行状況が増加するたびにコンソールに表示します。
  6. 圧縮が完了したら、アーカイブを指定した zipFile に保存します。
 1   using (FileStream ソース = File.Open("huge.bin", FileMode.Open, FileAccess.Read))
 2   {
 3      using (var archive = new Archive(new ArchiveEntrySettings(new PPMdCompressionSettings())))
 4      {
 5         ArchiveEntry エントリ = archive.CreateEntry("huge.bin", ソース);
 6         int パーセント準備 = 0;
 7         エントリ.CompressionProgressed += (s, e) =>
 8               {
 9                  int パーセント = (int)((100 * (long)e.ProceededBytes) / source.Length);
10                  if (パーセント > パーセント準備完了)                 
11                  {
12                        Console.WriteLine(string.Format("{0}% 圧縮", パーセント));
13                        パーセント準備 = パーセント;
14                  }       
15               };
16         archive.Save(zipFile);
17      }
18   }

7z の進捗率のレポート

7z アーカイブでも同様のアプローチが行われます。そのエントリには独自の CompressionProgressed イベント があります。

手順: C# の 7z アーカイブで LZMA2 による圧縮の進行状況を監視する</あ>

  1. ソース ファイル (huge.bin) を読み取りモードで開きます。
  2. LZMA2 圧縮設定を使用して SevenZipArchive オブジェクトを作成します。
  3. CreateEntry メソッドを使用して、ソース ファイルをエントリとしてアーカイブに追加します。
  4. CompressionProgressed イベントをサブスクライブして、圧縮の進行状況を追跡および計算します。
  5. 進行状況が更新されるたびに、完了した圧縮の割合を計算します。
  6. アーカイブを指定した保存先 (zipFile) に保存します。
Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.