Звіт про прогрес стиснення

Обробник подій прогресу

Процес стиснення може зайняти багато часу, особливо якщо розмір даних великий. Для zip-архіву є подія CompressionProgressed, щоб бути в курсі. Ця подія залежить від ProgressEventArgs, який містить кількість оброблених байтів. Ось як ми можемо підписатися на цю подію за допомогою лямбда-виразу:

1   entry.CompressionProgressed += (s, e) => { 
2      Console.WriteLine(string.Format("{0} байт стиснуто", e.ProceededBytes)); 
3   };

Відсоток прогресу Zip у звітах

Щоразу, коли виникає подія CompressionProgressed, ми ділимо число ProceededBytes на довжину вихідного файлу. Таким чином знаходимо співвідношення стислих байт на даний момент. Ось повний зразок.

Кроки: Звітування про відсоток виконання Zip у C#

  1. Відкрийте файл huge.bin у режимі читання за допомогою File.Open, щоб підготувати його до стиснення.
  2. Ініціалізуйте новий екземпляр класу Archive, вказавши PPMdCompressionSettings для стиснення.
  3. Створіть запис архіву для файлу huge.bin за допомогою методу CreateEntry, зв’язавши його з потоком вихідного файлу.
  4. Приєднайте обробник події до події CompressionProgressed, щоб контролювати хід стиснення. Він обчислює відсоток стисненого файлу.
  5. У обробнику подій оновіть відсоток стиснення та відображайте його на консолі кожного разу, коли прогрес збільшується.
  6. Після завершення стиснення збережіть архів у вказаний zip-файл.
 1   за допомогою (джерело FileStream = File.Open("huge.bin", FileMode.Open, FileAccess.Read))
 2   {
 3      за допомогою (var archive = new Archive(new ArchiveEntrySettings(new PPMdCompressionSettings())))
 4      {
 5         Запис ArchiveEntry = archive.CreateEntry("huge.bin", джерело);
 6         int percentReady = 0;
 7         entry.CompressionProgressed += (s, e) =>
 8               {
 9                  int percent = (int)((100 * (long)e.ProceededBytes) / source.Length);
10                  якщо (відсоток > відсоток готовий)                 
11                  {
12                        Console.WriteLine(string.Format("{0}% стиснутий", відсоток));
13                        percentReady = відсоток;
14                  }       
15               };
16         archive.Save(zipFile);
17      }
18   }

Повідомлення про відсоток прогресу 7z

Подібний підхід для архіву 7z. Його запис має власну подію CompressionProgressed

Кроки: моніторинг прогресу стиснення за допомогою LZMA2 в архіві 7z на C#

  1. Відкрийте вихідний файл (huge.bin) у режимі читання.
  2. Створіть об’єкт SevenZipArchive, використовуючи налаштування стиснення LZMA2.
  3. Додайте вихідний файл до архіву як запис за допомогою методу CreateEntry.
  4. Підпишіться на подію CompressionProgressed, щоб відстежувати та обчислювати прогрес стиснення.
  5. Для кожного оновлення прогресу обчисліть відсоток завершеного стиснення.
  6. Збережіть архів у вказане місце призначення (zip-файл).
 1за допомогою (джерело FileStream = File.Open("huge.bin", FileMode.Open, FileAccess.Read))
 2   {                
 3      за допомогою (var archive = new SevenZipArchive(new SevenZipEntrySettings(new SevenZipLZMA2CompressionSettings())))
 4      {
 5         Запис SevenZipArchiveEntry = archive.CreateEntry("huge.bin", джерело);
 6         int percentReady = 0;
 7         entry.CompressionProgressed += делегат (об’єкт s, ProgressEventArgs e) 
 8         {
 9               // s є SevenZipArchiveEntry
10               int percent = (int)((100 * (long)e.ProceededBytes) / source.Length);
11               якщо (відсоток > відсоток готовий)
12               {                               
13                  percentReady = відсоток;      
14               }
15         };
16         archive.Save(zipFile);
17      }
18   }
Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.