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

소개

ZIP 파일을 관리하는 것은 특히 중첩 아카이브가 포함된 경우 도전적일 수 있습니다. 이 가이드는 Aspose.ZIP for .NET을 사용하여 모든 내부 ZIP 아카이브를 하나의 아카이브로 추출하여 ZIP 구조를 평탄화하는 과정을 안내합니다.

평면 ZIP을 만드는 이유는 무엇인가요?

평면 ZIP 아카이브를 만들면 여러 가지 이점이 있습니다:

  • ZIP 파일 관리 단순화: 여러 파일을 처리할 때 복잡성을 줄입니다.
  • 모든 중첩 ZIP 내용을 하나의 아카이브로 추출: 파일을 통합하여 접근성을 높입니다.
  • 중복된 폴더 구조 감소: 파일의 조직을 간소화합니다.

목차

  1. C#에서 ZIP 아카이브 처리 설정하기
  2. 평면 ZIP 아카이브 만들기 위한 단계
  3. 평탄화된 ZIP 파일 저장하기
  4. 여러 ZIP 아카이브 일괄 처리하기
  5. 무료 API 라이센스 받기
  6. 결론 및 추가 자료

1. C#에서 ZIP 아카이브 처리 설정하기

중첩 ZIP 아카이브를 효과적으로 처리하기 위해 **Aspose.ZIP for .NET**을 활용할 것입니다. 이 강력한 라이브러리는 다음을 제공합니다:

  • 자동 ZIP 추출 및 재압축.
  • 여러 아카이브 형식 지원: ZIP, TAR, GZip 등.
  • 대형 아카이브의 효율적인 처리.

설치

NuGet을 통해 라이브러리를 쉽게 설치할 수 있습니다:

PM> Install-Package Aspose.Zip

또는 Aspose 다운로드 페이지에서 DLL을 다운로드할 수 있습니다.


2. 평면 ZIP 아카이브 만들기 위한 단계

다음 중첩 ZIP 구조를 고려해 보세요:

parent.zip
 ├ first.txt
 ├ inner.zip
 │ ├ file1.exe
 │ └ data.bin
 └ picture.gif

평탄화 후 모든 내부 ZIP 내용은 부모 ZIP에 통합됩니다:

flattened.zip
 ├ first.txt
 ├ picture.gif
 ├ file1.exe
 └ data.bin

코드 예제

중첩 ZIP 파일의 추출을 자동화하는 방법은 다음과 같습니다:

// 부모 ZIP 파일 로드
using (Archive parentZip = new Archive("parent.zip"))
{
    List<ArchiveEntry> toDelete = new List<ArchiveEntry>();
    List<string> newEntryNames = new List<string>();
    List<MemoryStream> newStreams = new List<MemoryStream>();

    foreach (ArchiveEntry entry in parentZip.Entries)
    {
        if (entry.Name.EndsWith(".zip", StringComparison.OrdinalIgnoreCase))
        {
            toDelete.Add(entry);
            using (MemoryStream zipStream = new MemoryStream())
            {
                entry.Open().CopyTo(zipStream);
                zipStream.Position = 0;
                using (Archive innerZip = new Archive(zipStream))
                {
                    foreach (ArchiveEntry innerEntry in innerZip.Entries)
                    {
                        using (MemoryStream entryStream = new MemoryStream())
                        {
                            innerEntry.Open().CopyTo(entryStream);
                            newEntryNames.Add(innerEntry.Name);
                            newStreams.Add(entryStream);
                        }
                    }
                }
            }
        }
    }

    foreach (var entry in toDelete)
        parentZip.DeleteEntry(entry);

    for (int i = 0; i < newEntryNames.Count; i++)
        parentZip.CreateEntry(newEntryNames[i], newStreams[i]);

    parentZip.Save("flattened.zip");
}

이 방법은 중첩 ZIP 파일 추출을 자동화하여 원활한 워크플로우를 보장합니다.


3. 평탄화된 ZIP 파일 저장하기

중첩 ZIP 내용을 추출한 후 다음 코드 줄을 사용하여 평탄화된 ZIP 파일을 저장합니다:

parentZip.Save("flattened.zip");

이렇게 하면 중첩 폴더가 없는 단일 ZIP 아카이브가 생성되어 파일 관리가 훨씬 쉬워집니다.


4. 여러 ZIP 아카이브 일괄 처리하기

특정 폴더에 있는 여러 ZIP 아카이브를 평탄화해야 하는 경우 다음 코드 스니펫을 사용할 수 있습니다:

string[] files = Directory.GetFiles("zip_folder", "*.zip");
foreach (string file in files)
{
    using (Archive archive = new Archive(file))
    {
        archive.ExtractToDirectory("output_folder");
    }
}

이 방법은 자동화된 대량 ZIP 처리를 가능하게 하여 시간과 노력을 절약합니다.


5. 무료 API 라이센스 받기

Aspose.ZIP전체 기능을 활용하려면 **무료 임시 라이센스**를 요청할 수 있습니다.

포괄적인 문서는 **Aspose.ZIP 가이드**를 방문하세요. 질문이 있으시면 **Aspose 포럼**에서 커뮤니티와 소통해 주세요.


6. 결론 및 추가 자료

요약

이 가이드에서는 다음을 다루었습니다:

C#에서 ZIP 파일을 평탄화하는 방법
중첩 ZIP 아카이브 추출하기
최종 ZIP 아카이브 저장하기
여러 ZIP 파일을 동시에 처리하기

Aspose.ZIP for .NET을 사용하면 애플리케이션에서 ZIP 아카이브를 효율적으로 추출하고 관리할 수 있습니다. 오늘부터 ZIP 처리 워크플로우를 최적화해 보세요!