Отчетность о прогрессе сжатия

Обработчик событий Progress

Процесс сжатия может занять много времени, особенно если размер данных огромный. Для архива ZIP существует событие «сжатие, предпринятое» ([ GetCompressionProgressed/ SetCompressionProgressed), чтобы оставаться опубликованным. Это событие опирается на ProgressEventargs, который до сих пор содержит количество проведенных байтов. Вот как мы можем подписаться на это событие, используя Lambda Expression:

1intry.setCompressionProgressed (((отправитель, args) -> {
2    System.out.println (args.getProudeedBytes () + "Байты сжаты");
3});

Сообщение о проценте хода ZIP

Каждый раз, когда событие «CompressionProgrescesed», мы разделяем номер «Продолженные» на длине исходного файла. Такое мы находим в данный момент соотношение сжатых байтов. Вот полный образец.

 1File Source = new File ("umage.bin");
 2Попробуйте (Archive Archive = new Archive ()) {
 3    ArchiveEntry intry = archive.createEntry («огромный.bin», источник);
 4    окончательный int [] inpityReady = new int [1];
 5    intry.setCompressionProgressed (((отправитель, args) -> {
 6        int процент = (int) ((100 * (long) args.getproudeedbytes ()) / source.length ());
 7        if (процент> процент готово [0])
 8        {
 9            System.out.println (процент + "% сжатый");
10            процент готовы [0] = процент;
11        }
12    });
13    archive.save ("output.zip");
14}

Сообщение 7Z Процент прогресса

Подобный подход для архива 7Z. Его запись имеет собственные методы получения и установки события ( GetCompressionProgressed/ SetCompressionProgressed)

 1File Source = new File ("umage.bin");
 2Попробуйте (Sevenziparchive Archive = new Sevenziparchive (New SevenzipentrySettings (new Sevenziplzma2compressionsettings ()))) {
 3    SevenziparchiveEntry entry = archive.createEntry ("ugear.bin", источник);
 4    окончательный int [] inpityReady = new int [1];
 5    intry.setCompressionProgressed (((отправитель, args) -> {
 6        // отправитель - SevenziparchiveEntry
 7        int процент = (int) ((100 * (long) args.getproudeedbytes ()) / source.length ());
 8        if (процент> процент готово [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.