압축 진행 상황보고

진행 이벤트 핸들러

압축 프로세스는 특히 데이터 크기가 크면 오랜 시간이 걸릴 수 있습니다. Zip Archive의 경우 ‘CompressionProgressed` 이벤트 ( GetCompressionProgressed/ SetCompressionProgressed)가 게시되어 있습니다. 이 이벤트는 지금까지 진행된 바이트의 수를 포함하는 ProgressEventargs에 의존합니다. 이것이 Lambda Expression를 사용 하여이 이벤트를 구독 할 수있는 방법입니다.

1Entrys.setCompressionProgressed ((sender, args) -> {
2    System.out.println (Args.getProeceedBytes () + "바이트 압축");
3});

zip 진행률 보고서

compressionprogressed '이벤트가 올 때마다 우리는gractedBytes’번호를 원본 파일의 길이로 나눕니다. 우리는 현재 압축 바이트의 비율을 발견합니다. 다음은 전체 샘플입니다.

 1파일 소스 =  파일 ( "muge.bin");
 2try (Archive Archive = new Archive ()) {
 3    ArchiveEntry Entry = Archive.CreateEntry ( "muge.bin", source);
 4    최종 int [] 퍼센트 준비 = 새로운 int [1];
 5    Entrys.setCompressionProgressed ((sender, args) -> {
 6        int 백분율 = (int) ((100 * (long) args.getProeceedBytes ()) / source.length ());
 7        if (퍼센트> 퍼센트 레디 [0])
 8        {
 9            System.out.println (% + "% 압축");
10            퍼지 준비 [0] = %;
11        }
12    });
13    archive.save ( "output.zip");
14}

7Z 진행률 보고서

비슷한 접근법은 7Z 아카이브에 대한 것입니다. 입력은 이벤트를 얻고 설정하는 자체 방법이 있습니다 ( GetCompressionProgressed/ SetCompressionProgressed)

 1파일 소스 =  파일 ( "muge.bin");
 2try (Sevenziparchive Archive = new Sevenziparchive (New SevenzipentRySettings (New Sevenziplzma2compressionSettings ())) {
 3    SevenziparchiveEntry entry = archive.createentry ( "muge.bin", source);
 4    최종 int [] 퍼센트 준비 = 새로운 int [1];
 5    Entrys.setCompressionProgressed ((sender, args) -> {
 6        // 발신자는 SevenziparchiveEntry입니다
 7        int 백분율 = (int) ((100 * (long) args.getProeceedBytes ()) / 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.