압축 진행 상황 보고

진행 이벤트 핸들러

특히 데이터 크기가 큰 경우 압축 프로세스에 오랜 시간이 걸릴 수 있습니다. zip 아카이브의 경우 계속 게시되는 CompressionProgressed 이벤트가 있습니다. 이 이벤트는 지금까지 진행된 바이트 수를 포함하는 ProgressEventArgs에 의존합니다. 다음은 람다 확장을 사용하여 이 이벤트를 구독할 수 있는 방법입니다.

1   Entry.CompressionProgressed += (s, e) => { 
2      Console.WriteLine(string.Format("{0}바이트 압축됨", e.ProceededBytes)); 
3   };

Zip 진행률 보고

‘CompressionProgressed’ 이벤트가 발생할 때마다 ‘ProceededBytes’ 숫자를 원본 파일의 길이로 나눕니다. 이를 통해 현재 압축된 바이트의 비율을 알 수 있습니다. 다음은 전체 샘플입니다.

단계: C#에서 Zip 진행률 보고

  1. File.Open을 사용하여 읽기 모드에서 huge.bin 파일을 열어 압축을 준비합니다.
  2. 압축을 위한 PPMdCompressionSettings를 지정하여 Archive 클래스의 새 인스턴스를 초기화합니다.
  3. CreateEntry 메소드를 사용하여 huge.bin 파일에 대한 아카이브 항목을 생성하고 이를 소스 파일 스트림에 연결합니다.
  4. CompressionProgressed 이벤트에 이벤트 핸들러를 연결하여 압축 진행 상황을 모니터링합니다. 지금까지 압축된 파일의 비율을 계산합니다.
  5. 이벤트 핸들러 내에서 압축 비율을 업데이트하고 진행률이 높아질 때마다 콘솔에 표시합니다.
  6. 압축이 완료되면 지정된 zipFile에 아카이브를 저장합니다.
 1   (FileStream 소스 = File.Open("huge.bin", FileMode.Open, FileAccess.Read)) 사용
 2   {
 3      (var archive = new Archive(new ArchiveEntrySettings(new PPMdCompressionSettings()))) 사용
 4      {
 5         ArchiveEntry 항목 = archive.CreateEntry("huge.bin", source);
 6         int 퍼센트 준비 = 0;
 7         Entry.CompressionProgressed += (s, e) =>
 8               {
 9                  int 퍼센트 = (int)((100 * (long)e.ProceededBytes) / source.Length);
10                  if (퍼센트 > 퍼센트준비)                 
11                  {
12                        Console.WriteLine(string.Format("{0}% 압축됨", 백분율));
13                        퍼센트준비 = 퍼센트;
14                  }       
15               };
16         archive.Save(zip파일);
17      }
18   }

7z 진행률 보고

7z 아카이브에도 비슷한 접근 방식이 있습니다. 해당 항목에는 자체 CompressionProgressed 이벤트가 있습니다.

단계: C#의 7z 아카이브에서 LZMA2를 사용하여 압축 진행 상황 모니터링</ 아>

  1. 소스 파일(huge.bin)을 읽기 모드로 엽니다.
  2. LZMA2 압축 설정을 사용하여 SevenZipArchive 개체를 만듭니다.
  3. CreateEntry 메소드를 사용하여 소스 파일을 아카이브에 항목으로 추가합니다.
  4. CompressionProgressed 이벤트를 구독하여 압축 진행률을 추적하고 계산합니다.
  5. 모든 진행 상황 업데이트에 대해 완료된 압축 비율을 계산합니다.
  6. 아카이브를 지정된 대상(zipFile)에 저장합니다.
Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.