ZIP 아카이브 생성 취소
Contents
[
Hide
Show
]다양한 이유로 zip 아카이브 생성을 취소하고 싶을 수도 있습니다. 시간이 너무 오래 걸리거나 실제로 일부 항목이 필요하지 않을 수도 있습니다.
개요
아카이브 관련 이벤트의 컨테이너인 EventsBag 클래스가 있습니다. 이제 하나의 이벤트인 EntryCompressed를 지원합니다. 아카이브 항목이 압축된 후 발생하며 취소가 가능합니다.
긴 아카이브 생성 취소 중
ZIP 아카이브가 약 1분 안에 구성되기를 원한다고 가정해 보겠습니다. 일부 항목이 압축된 후 압축 시작부터 소요된 시간을 확인하고, 1분 이상 소요되면 프로세스를 취소하십시오. 결과 아카이브에는 이벤트를 트리거한 항목을 포함하여 이미 압축된 항목이 있을 것입니다.
단계: C#에서 긴 아카이브 생성을 취소하려면 강하다>
- 압축을 처리하기 위해 새로운 ‘Archive’ 개체를 초기화합니다.
- 압축 과정의 지속 시간을 추적하기 위해 스톱워치를 시작합니다.
- ‘CreateEntries’ 메서드를 사용하여 디렉터리에서 아카이브 항목을 생성하고 압축할 폴더를 지정합니다.
- 압축 이벤트를 처리하기 위해 ‘EventsBag’를 설정합니다.
- 경과 시간이 1분을 초과하는지 확인하고 필요한 경우 작업을 취소하는 ‘EntryCompressed’ 이벤트에 대한 이벤트 핸들러를 연결합니다.
- 스톱워치를 시작하고
ArchiveSaveOptions
에EventsBag
를 전달하여 아카이브 저장을 진행합니다.
1 using (var archive = new Archive())
2 {
3 Stopwatch sw = new Stopwatch();
4
5 archive.CreateEntries(@"D:\BigFolder");
6 EventsBag eb = new EventsBag();
7 eb.EntryCompressed += delegate(object sender, CancelEntryEventArgs args)
8 {
9 if (sw.Elapsed > TimeSpan.FromSeconds(60))
10 args.Cancel = true;
11 };
12 sw.Start();
13 archive.Save("output.zip", new ArchiveSaveOptions() { EventsBag = eb });
14 }
특정 입력 후 취소
특정 항목이 압축된 후 취소하려면 다음 스니펫을 사용하세요.
단계: 특정 항목 이후 아카이브 생성 취소 C#으로 압축
- 압축을 처리하기 위해 새로운 ‘Archive’ 개체를 초기화합니다.
- ‘CreateEntries’ 메서드를 사용하여 지정된 디렉터리에서 파일을 추가합니다.
- 압축 이벤트를 관리하려면 ‘EventsBag’를 설정하세요.
- 압축 중인 항목이 특정 파일 이름(예: “last.bin”)과 일치하는지 확인하는 ‘EntryCompressed’ 이벤트에 대한 이벤트 핸들러를 연결합니다.
- 대상 항목이 발견되면 취소를 트리거합니다.
ArchiveSaveOptions
에 포함된EventsBag
를 사용하여 아카이브를 저장합니다.
1 using (var archive = new Archive())
2 {
3 archive.CreateEntries(@"D:\BigFolder");
4 EventsBag eb = new EventsBag();
5 eb.EntryCompressed += delegate(object sender, CancelEntryEventArgs args)
6 {
7 if (args.Entry.Name == @"BigFolder\last.bin")
8 args.Cancel = true;
9 };
10 archive.Save("output.zip", new ArchiveSaveOptions() { EventsBag = eb });
11 }