여러 ZIP 아카이브가 다른 ZIP 안에 캡슐화되는 시나리오를 종종 접합니다. 이러한 경우 먼저 상위 ZIP 파일을 추출한 다음 중첩된 아카이브를 하나씩 추출해야 합니다. 작업을 더 쉽게 하기 위해 이 기사에서는 복잡한 코드를 작성하지 않고 C# .NET에서 중첩된 ZIP 아카이브를 추출하는 방법을 보여줍니다.

중첩된 ZIP 아카이브를 추출하는 C# .NET API

중첩된 ZIP 아카이브의 압축을 풀기 위해 .NET용 Aspose.ZIP를 활용합니다. API는 .NET 애플리케이션 내에서 보관 작업을 수행하도록 설계되었습니다. 인기 있는 아카이브 형식을 원활하게 만들고 조작할 수 있습니다. API의 DLL을 다운로드하거나 NuGet을 사용하여 설치할 수 있습니다.

PM> Install-Package Aspose.Zip

C#에서 중첩된 ZIP 아카이브 추출

중첩된 ZIP 아카이브의 추출을 보여주기 위해 3개의 항목이 포함된 다음 ZIP 파일을 만들었습니다.

중첩된 ZIP 아카이브

중첩된 ZIP 아카이브

중첩된 각 ZIP 아카이브를 추출하고 해당 내용을 별도의 폴더에 저장합니다. 다음은 C#에서 중첩된 ZIP 아카이브를 추출하는 단계입니다.

  • 먼저 FileStream 객체를 생성하여 ZIP 파일을 로드합니다.
  • 그런 다음 Archive 클래스를 사용하여 ZIP 파일을 로드합니다.
  • Archive.Entries 컬렉션의 각 ArchiveEntry를 반복합니다.
  • 컬렉션의 ZIP 아카이브를 필터링하고 각 아카이브에 대해 다음 단계를 수행합니다.

다음 코드 샘플은 C# .NET에서 중첩된 ZIP 아카이브의 압축을 푸는 방법을 보여줍니다.

// 파일 스트림에서 ZIP 파일 열기
using (FileStream zipFile = File.Open("Archives/nested-archive.zip", FileMode.Open))
{
    // 아카이브 클래스를 사용하여 ZIP 파일 로드
    using (Archive archive = new Archive(zipFile, new ArchiveLoadOptions()))
    {
        // ZIP 아카이브의 각 항목에 액세스
        foreach(ArchiveEntry entry in archive.Entries)
        {
            if(entry.Name.ToLower().Contains(".zip"))
            {
                // 중첩 아카이브를 위한 메모리 스트림 생성
                MemoryStream nestedArchiveStream = new MemoryStream();

                // 아카이브를 메모리 스트림에 복사
                entry.Open().CopyTo(nestedArchiveStream);

                // 메모리 스트림에서 중첩 아카이브 로드
                using (var nestedArchive = new Archive(nestedArchiveStream))
                {
                    // 아카이브를 디스크에 추출합니다.
                    nestedArchive.ExtractToDirectory("Archives/Extracted/"+entry.Name);
                }                               

            }

        } 
    }
}

다음은 추출된 ZIP 아카이브의 스크린샷입니다.

C# .NET에서 중첩된 ZIP 아카이브 추출

압축을 푼 중첩 아카이브

무료 API 라이선스 받기

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

결론

이 기사에서는 C#에서 중첩된 ZIP 아카이브를 추출하는 방법을 배웠습니다. 단계별 가이드 및 코드 샘플은 중첩된 각 아카이브를 별도의 폴더에 압축 해제하는 방법을 보여줍니다. 또한 문서를 방문하여 .NET용 Aspose.ZIP의 다른 기능을 탐색할 수 있습니다. 또한 포럼을 통해 질문할 수 있습니다.

또한보십시오