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

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

Процес стиснення може зайняти тривалий час, особливо якщо розмір даних величезний. Для Zip Archive відбувається подія `CompressionProgress ‘( GetCompressionProgress/ setCompressionProgressed) залишатися в розміщенні. Ця подія спирається на ProgressEventArgs, який містить кількість тривих байтів досі. Ось як ми можемо підписатися на цю подію за допомогою Lambda Expression:

1entry.setCompressionProgress ((відправник, args) -> {
2    System.out.println (args.getProceedBytes () + "Байти стиснуті");
3});

Звіт про відсоток прогресу ZIP

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

 1Джерело файлу = новий файл ("величезний.bin");
 2спробуйте (архів архів = новий архів ()) {
 3    ArchiveEntry entry = archive.createEntry ("величезний.bin", джерело);
 4    кінцевий int [] відсоток = новий int [1];
 5    entry.setCompressionProgress ((відправник, args) -> {
 6        int відсотків = (int) ((100 * (довгий) args.getproceededbytes ()) / source.length ());
 7        якщо (відсоток> відсоток [0])
 8        {
 9            System.out.println (відсоток + "% стисненого");
10            відсоток [0] = відсоток;
11        }
12    });
13    Archive.save ("output.zip");
14}

Повідомлення про прогрес 7Z

Подібний підхід призначений для архіву 7Z. Його запис має власні методи отримання та встановлення події ( GetCompressionProgress/ SetCompressionProgred)

 1Джерело файлу = новий файл ("величезний.bin");
 2Спробуйте (Sevenziparchive Archive = новий семизапархів (нові SewzipentrySettings (New Sevenziplzma2Compressionsettings ())) {
 3    Sevenziparchiveentry entry = archive.createEntry ("величезний.bin", джерело);
 4    кінцевий int [] відсоток = новий int [1];
 5    entry.setCompressionProgress ((відправник, args) -> {
 6        // відправник - це семиципархівента
 7        int відсотків = (int) ((100 * (довгий) args.getproceededbytes ()) / source.length ());
 8        якщо (відсоток> відсоток [0])
 9        {
10            System.out.println (відсоток + "% стисненого");
11            відсоток [0] = відсоток;
12        }
13    });
14    Archive.save ("output.zip");
15}
Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.