Отчетность о прогрессе сжатия
Обработчик событий 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}