C#에서 평면 ZIP 아카이브 만들기

ZIP 아카이브 작업 시, ZIP 파일이 다른 ZIP 파일을 포함하여 중첩 구조를 형성하는 경우가 발생할 수 있습니다. 이를 간소화하여 모든 내부 ZIP 아카이브를 외부 아카이브로 추출하고자 한다면, 올바른 곳에 오셨습니다. 이 기사에서는 강력한 Aspose.ZIP for .NET을 사용하여 C#에서 평면 ZIP 아카이브를 만드는 방법을 탐구합니다.

목차

.NET API를 사용한 평면 ZIP 아카이브 개요

평면 ZIP 아카이브를 만들기 위해 Aspose.ZIP for .NET 라이브러리를 활용할 것입니다. 이 강력한 아카이빙 API는 ZIP, TAR, GZip 및 7z를 포함한 다양한 아카이브 형식을 생성하고 추출할 수 있게 해줍니다. NuGet에서 이 라이브러리를 쉽게 설치하거나 다운로드 섹션에서 DLL을 다운로드할 수 있습니다.

PM> Install-Package Aspose.Zip

C#에서 평면 ZIP 아카이브 생성 단계

평면 ZIP 아카이브의 구조를 더 잘 이해하기 위해, 다음 예제를 고려해 보겠습니다. 처음에는 다른 ZIP 아카이브를 포함하는 ZIP 아카이브가 있습니다:

parent.zip
 ├ first.txt
 ├ inner.zip
 │ ├ game.exe
 │ └ subitem.bin
 └ picture.gif

이 ZIP 아카이브를 평면 구조로 변환한 후, 모든 항목이 부모 ZIP으로 추출되어 다음과 같은 구조가 됩니다:

flatten.zip
 ├ first.txt
 ├ picture.gif
 ├ game.exe
 └ subitem.bin

구현 단계

C#에서 프로그래밍 방식으로 평면 ZIP 아카이브를 만드는 방법은 다음과 같습니다:

  1. 부모 ZIP 아카이브 로드: Archive 클래스를 사용하여 부모 ZIP을 로드합니다.
  2. 목록 초기화: 다음을 저장할 목록을 만듭니다:
    • 부모 ZIP에서 삭제할 항목
    • 추출된 항목 및 해당 이름
  3. 아카이브 항목 반복: Archive.Entries 컬렉션을 사용하여 부모 ZIP의 각 ArchiveEntry를 반복합니다.
  4. 각 항목 처리:
    • 항목이 ZIP 아카이브인지 확인합니다: ArchiveEntry.Name.EndsWith(".zip", StringComparison.InvariantCultureIgnoreCase)를 사용합니다.
    • 맞다면, 삭제할 항목 목록에 추가합니다.
    • ArchiveEntry.Open().CopyTo(MemoryStream)를 사용하여 항목을 MemoryStream 객체로 엽니다.
    • 내부 ZIP 아카이브의 항목을 반복하며 다음 작업을 수행합니다:
      • 각 항목의 이름을 추가할 항목 목록에 추가합니다.
      • ArchiveEntry.Open().CopyTo(MemoryStream)를 사용하여 각 항목을 MemoryStream에 로드합니다.
      • 부모 ZIP에 추가할 항목 목록에 항목을 추가합니다.
  5. 내부 ZIP 항목 삭제: 내부 ZIP 아카이브 목록을 반복하며 각 항목을 Archive.DeleteEntry(ArchiveEntry) 메서드를 사용하여 삭제합니다.
  6. 부모 ZIP에 새 항목 추가: 추가할 항목 목록을 반복하며 Archive.CreateEntry(String, Stream) 메서드를 사용하여 각 항목을 포함합니다.
  7. 부모 ZIP 아카이브 저장: 마지막으로, Archive.Save(String) 메서드를 사용하여 수정된 부모 ZIP 아카이브를 저장합니다.

다음은 C#에서 평면 ZIP 아카이브를 만드는 방법을 보여주는 코드 샘플입니다:

무료 API 라이선스 받기

Aspose.ZIP for .NET을 평가 제한 없이 사용하기 위해 무료 임시 라이선스를 받을 수 있습니다.

결론

이 튜토리얼에서는 C#을 사용하여 효율적으로 평면 ZIP 아카이브를 만드는 방법을 배웠습니다. 내부 ZIP 아카이브를 부모 ZIP으로 추출하는 과정을 시연하여 중첩 폴더를 효과적으로 피했습니다. 추가 정보가 필요하시면 Aspose.ZIP for .NET 문서를 확인하시거나 포럼을 통해 문의해 주십시오.

참고 자료