압축 진행 상황보고
진행 이벤트 핸들러
압축 프로세스는 특히 데이터 크기가 크면 오랜 시간이 걸릴 수 있습니다. 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}