ZIP アーカイブの作成をキャンセルする

さまざまな理由で、zip アーカイブの作成をキャンセルしたい場合があります。時間がかかりすぎる場合や、実際にはそこにいくつかのエントリが必要ない場合があります。

概要

アーカイブ関連のイベントのコンテナーである EventsBag クラスがあります。現在、1 つのイベント EntryCompressed がサポートされています。アーカイブ エントリが圧縮された後に発生し、キャンセル可能です。

長いアーカイブの作成をキャンセルします

ZIP アーカイブを約 1 分で作成したいとします。 一部のエントリを圧縮した後、圧縮開始からの時間を確認し、1分以上かかっている場合は処理をキャンセルします。結果のアーカイブには、イベントをトリガーしたエントリを含む圧縮されたエントリがすでに含まれています。

手順: C# で長いアーカイブの作成をキャンセルするには強い>

  1. 圧縮を処理するために新しい Archive オブジェクトを初期化します。
  2. ストップウォッチを開始して、圧縮プロセスの時間を追跡します。
  3. CreateEntries メソッドを使用してディレクトリからアーカイブ エントリを作成し、圧縮するフォルダーを指定します。
  4. 圧縮イベントを処理するために「EventsBag」を設定します。
  5. EntryCompressed イベントのイベント ハンドラーをアタッチします。このイベント ハンドラーは、経過時間が 1 分を超えているかどうかを確認し、必要に応じて操作をキャンセルします。
  6. ストップウォッチを開始し、アーカイブの保存を続行し、「ArchiveSaveOptions」の「EventsBag」を渡します。
 1    using (var archive = new Archive())
 2    {
 3        Stopwatch sw = new Stopwatch();
 4                                
 5        archive.CreateEntries(@"D:\BigFolder");
 6        EventsBag eb = new EventsBag();
 7        eb.EntryCompressed += delegate(object sender, CancelEntryEventArgs args)
 8            {
 9            if (sw.Elapsed > TimeSpan.FromSeconds(60))
10                args.Cancel = true;
11            };
12        sw.Start();
13        archive.Save("output.zip", new ArchiveSaveOptions() { EventsBag = eb });
14    }

一定の入力後のキャンセル

特定のエントリが圧縮された後にキャンセルしたい場合は、次のスニペットを使用します。

手順: 特定のエントリの作成後にアーカイブの作成をキャンセルするC# で圧縮

  1. 圧縮を処理するために新しい Archive オブジェクトを初期化します。
  2. CreateEntries メソッドを使用して、指定したディレクトリからファイルを追加します。
  3. 圧縮イベントを管理するために「EventsBag」を設定します。
  4. EntryCompressed イベントのイベント ハンドラをアタッチします。これは、圧縮されているエントリが特定のファイル名 (例: “last.bin”) と一致するかどうかをチェックします。
  5. 対象のエントリが見つかった場合は、キャンセルをトリガーします。
  6. ArchiveSaveOptions に含まれる EventsBag を使用してアーカイブを保存します。
 1    using (var archive = new Archive())
 2    {                          
 3        archive.CreateEntries(@"D:\BigFolder");
 4        EventsBag eb = new EventsBag();
 5        eb.EntryCompressed += delegate(object sender, CancelEntryEventArgs args)
 6            {
 7            if (args.Entry.Name == @"BigFolder\last.bin")
 8                args.Cancel = true;
 9            };      
10        archive.Save("output.zip", new ArchiveSaveOptions() { EventsBag = eb });
11    }
Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.