푸터 콘텐츠로 바로가기
다른 구성 요소와 비교

IronXL 사용한 C# 개발자를 위한 ZIP 압축 파일 튜토리얼

ZipArchive 소개

파일을 압축된 형식으로 전송하려고 할 때, 가장 먼저 떠오르는 것은 보통 Zip Archive입니다. Zip Archive는 단일 파일이나 전체 컬렉션을 하나의 아카이브로 압축하고 묶는 인기 있는 형식입니다. 그러나 대량의 파일을 압축해야 할 때에는 파일을 하나하나 아카이브하고 형식을 맞추어야 하므로 번거로울 수 있습니다. 그러나 반드시 그렇게 할 필요는 없습니다. 대량의 작업은 프로그래밍적으로 자동화되어야 합니다. IronZip이라는 간단하면서도 직관적인 라이브러리를 사용하여 모든 것을 달성할 수 있습니다.

이 기사에서는 IronZip의 핵심 기능과 기능성을 간단히 논의하고, 어떻게 워크플로를 더 잘 자동화하고 효율성을 높이며 오류가 발생하기 쉬운 수작업을 제거할 수 있는지 설명하겠습니다.

폴더 또는 파일로부터 새 zip 파일 생성하기

다음은 여러 파일을 받아 하나의 아카이브로 압축하고 작업 후 내보내는 예제입니다. 이 기사에 있는 모든 예시는 반복되는 코드 블록을 피하기 위해 static void Main() 메서드로 둘러싸여 있습니다.

using IronZip;

class Program
{
    static void Main(string[] args)
    {
        // Create an empty ZIP archive
        using (var archive = new IronZipArchive())
        {
            // Add files to the ZIP archive
            archive.Add("./assets/image1.jpg");
            archive.Add("./assets/image2.jpg");
            archive.Add("./assets/image3.jpg");

            // Export the ZIP archive to a file
            archive.SaveAs("output.zip");
        }
    }
}
using IronZip;

class Program
{
    static void Main(string[] args)
    {
        // Create an empty ZIP archive
        using (var archive = new IronZipArchive())
        {
            // Add files to the ZIP archive
            archive.Add("./assets/image1.jpg");
            archive.Add("./assets/image2.jpg");
            archive.Add("./assets/image3.jpg");

            // Export the ZIP archive to a file
            archive.SaveAs("output.zip");
        }
    }
}
$vbLabelText   $csharpLabel
  1. 우리는 먼저 IronZip을 가져옵니다.
  2. 그런 다음 IronZip을 사용하여 아카이브를 생성합니다.
  3. 우리는 archive.Add()을 호출하여 여러 파일을 아카이브에 추가합니다. 경로 이름은 절대 경로여야 하며, 그렇지 않으면 해당 파일을 찾는 작업에 실패하게 됩니다.
  4. 마지막으로 archive.SaveAs()을 호출하여 zip 아카이브를 output.zip으로 내보냅니다.

기존 zip 파일을 새 파일 또는 수정 사항으로 업데이트하기

다른 예제를 살펴보겠습니다; 이번에는 IronZip의 기능을 보여주기 위해 기존 zip 아카이브를 새 파일로 편집할 것입니다.

using IronZip;

class Program
{
    static void Main(string[] args)
    {
        // Open an existing ZIP archive
        using (var archive = IronZipArchive.FromFile("existing.zip"))
        {
            // Add additional files to the existing ZIP archive
            archive.Add("./assets/image3.png");
            archive.Add("./assets/image4.png");

            // Export the updated ZIP archive to a new file
            archive.SaveAs("result.zip");
        }
    }
}
using IronZip;

class Program
{
    static void Main(string[] args)
    {
        // Open an existing ZIP archive
        using (var archive = IronZipArchive.FromFile("existing.zip"))
        {
            // Add additional files to the existing ZIP archive
            archive.Add("./assets/image3.png");
            archive.Add("./assets/image4.png");

            // Export the updated ZIP archive to a new file
            archive.SaveAs("result.zip");
        }
    }
}
$vbLabelText   $csharpLabel
  1. 우리는 먼저 IronZip을 가져옵니다.
  2. IronZip을 사용하여 아카이브를 만들지만 이번에는 IronZipArchive.FromFile()을 사용하여 기존 zip 파일을 가져옵니다.
  3. 우리는 archive.Add()을 호출하여 원하는 파일을 아카이브에 추가합니다. 경로 이름은 절대 경로여야 하며, 그렇지 않으면 기존 파일을 찾는 작업에 실패하게 됩니다.
  4. 마지막으로 archive.SaveAs()을 호출하여 업데이트된 zip 아카이브를 result.zip으로 내보냅니다.

위의 코드에서 볼 수 있듯이, 작업 및 형식은 Zip 파일에 파일을 생성하고 추가할 때 사용되는 방식과 유사합니다. 주요 차이점은 대신 zip 파일을 가져오기 때문에, IronZip의 간단하면서도 직관적인 기능을 보여줍니다.

Zip Archive에서 파일 추출하기

우리는 Zip Archive 또는 Zip 패키지에서 파일을 추출하는 데 IronZip을 사용할 수 있습니다. 이것을 다른 예제로 살펴보겠습니다.

using IronZip;

class Program
{
    static void Main(string[] args)
    {
        // Extract the ZIP archive content to a specified directory
        IronZipArchive.ExtractArchiveToDirectory("output.zip", "extracted");
    }
}
using IronZip;

class Program
{
    static void Main(string[] args)
    {
        // Extract the ZIP archive content to a specified directory
        IronZipArchive.ExtractArchiveToDirectory("output.zip", "extracted");
    }
}
$vbLabelText   $csharpLabel

IronZip을 가져와 IronZipArchive.ExtractArchiveToDirectory()을 호출합니다. 이 메소드는 기존 zip 아카이브의 내용을 지정된 대상 디렉토리로 추출합니다.

또한 암호로 보호된 zip 아카이브를 다루어야 하는 경우, 다른 메소드를 사용하여 아카이브를 추출할 수 있습니다.

using IronZip;

class Program
{
    static void Main(string[] args)
    {
        // Extract the protected ZIP archive content to a specified directory
        IronZipArchive.ExtractArchiveToDirectory("output.zip", "extracted", "P@ssw0rd");
    }
}
using IronZip;

class Program
{
    static void Main(string[] args)
    {
        // Extract the protected ZIP archive content to a specified directory
        IronZipArchive.ExtractArchiveToDirectory("output.zip", "extracted", "P@ssw0rd");
    }
}
$vbLabelText   $csharpLabel

궁극적으로 우리는 또 다른 매개변수, 즉 보호된 zip 아카이브의 암호를 전달합니다. 나머지 작업은 위에 표시된 것과 동일합니다.

고급 주제 및 모범 사례

위에서 논의한 아카이브 추가, 추출, 생성에 대한 코드 예제는 zip 아카이브를 다룰 때 가장 일반적입니다. 그러나 다른 형식을 추출하거나 단순히 아카이브의 내용을 보는 것과 같은 더 고급 기능을 위해서는 IronZIP가 커버하고 더 많은 기능을 제공합니다.

IronZIP의 고급 기능

  • 교차 호환성: IronZIP은 .NET Core (3.1+), Standard (2.0+), .NET Framework (4.6.2+)를 포함한 다양한 .NET 버전과 호환됩니다. 이 라이브러리는 웹 (Blazor), 모바일 (MAUI), 데스크톱 (WPF), 콘솔에서도 작동합니다. 이로 인해 개발자는 플랫폼 및 버전 제한을 초월할 수 있습니다.

  • 아카이브 생성: ZIP 형식 외에도 IronZIP은 TAR, GZIP, BZIP2 아카이브 생성을 지원합니다.

  • 아카이브 추출: IronZIP을 사용하여 코드 한 블록으로 아카이브를 추출하고 파일을 어렵지 않게 압축 해제할 수 있습니다.

  • 파일 및 파일 시스템 추가: IronZIP은 이미지, 텍스트 파일 및 문서 (PDF, DOCX, XLSX)를 비롯한 zip 아카이브 조작을 도와주며, MP3 및 WAV와 같은 오디오 파일도 추가할 수 있습니다. 심지어 전체 파일 시스템 또는 개별 텍스트 파일을 ZipArchive 아카이브로 압축할 수도 있습니다.

  • 내보내기 및 생성: AES128 및 AES256 표준으로 아카이브를 암호로 보호할 수 있습니다. 또한 TAR, GZIP, BZIP2와 같은 형식을 생성하고 내보낼 수 있습니다.

  • 사용자 지정 압축 수준: IronZIP은 개발자가 압축 설정을 조정하여 알고리즘을 자신들의 필요에 맞출 수 있게 합니다.

  • 아카이브 편집: IronZIP을 사용하여 아카이브 내의 파일 항목을 쉽게 추가, 추출, 삭제할 수 있으며, 편집 관련 작업에 대한 포괄적인 솔루션을 제공합니다.

  • 파일 항목 속성: IronZIP은 아카이브 내의 파일 이름을 추출 없이 검색할 수 있으며, 각각의 파일에 대해 특정 코멘트를 남기도록 돕기 위해 선택적인 아카이브 코멘트를 설정할 수 있는 기능을 제공합니다.

  • 라이선스 선택: IronZIP은 적응형 라이선스 선택을 제공하며, 무료 체험판 버전을 포함하여 개발자가 최상의 요구 사항에 맞는 것을 선택할 수 있게 합니다.

결론

개발자가 자주 직면하는 일상적인 작업은 압축 파일 및 아카이브를 다루는 것이지만, 많은 양을 관리하는 것은 스트레스가 많고 인간 오류에 취약할 수 있습니다. System.IO.Compression과 같은 옵션이 있지만, IronZIP을 사용하면 압축 아카이브를 다룰 때 더 많은 기능을 수행하고 문제를 신속하게 해결할 수 있습니다. 이 기사에서는 IronZIP의 고급 기능과 zip 아카이브 생성, 항목 삭제, 파일 추가와 같은 일반적인 작업에 대해 논의했습니다. IronZIP을 사용하여 이 작업들을 프로그래밍 방식으로 수행하면 아카이브 처리에서 효율성, 확장성, 자동화가 향상됩니다.

참고해 주세요System.IO.Compression은 해당 소유자의 등록 상표입니다. 이 사이트는 System.IO.Compression과 관련 없고, 승인받지 않았으며, 후원받지 않습니다. 모든 제품명, 로고 및 브랜드는 해당 소유자의 자산입니다. 비교는 정보 제공 목적으로만 사용되며, 작성 시점에 공개적으로 이용 가능한 정보를 반영합니다.

자주 묻는 질문

C#에서 폴더를 ZIP 파일로 압축하는 방법은 무엇인가요?

C#에서 폴더로부터 ZIP 파일을 생성하려면 IronZIP 라이브러리를 사용할 수 있습니다. 먼저 IronZIP 라이브러리를 임포트하고, IronZipArchive 인스턴스를 생성한 다음, archive.AddFolder() 사용하여 폴더를 추가하고, archive.SaveAs() 를 사용하여 저장합니다.

C#에서 ZIP 압축 파일에서 데이터를 추출하는 과정은 무엇인가요?

C#에서 IronZIP 사용하여 IronZipArchive.ExtractArchiveToDirectory() 메서드를 호출하면 ZIP 압축 파일에서 데이터를 추출할 수 있습니다. 이 메서드를 사용하면 압축 해제할 디렉터리를 지정할 수 있습니다.

C#에서 ZIP 압축 파일의 내용을 프로그램적으로 업데이트하는 방법은 무엇인가요?

C#에서 ZIP 아카이브의 내용을 프로그래밍 방식으로 업데이트하려면 IronZIP IronZipArchive.FromFile() 을 사용하여 기존 아카이브를 불러온 다음 archive.Add() 사용하여 파일을 추가하거나 archive.Remove() 사용하여 파일을 삭제한 후 archive.SaveAs() 를 사용하여 변경 사항을 저장하면 됩니다.

IronZIP 암호로 보호된 ZIP 파일을 처리할 수 있습니까?

네, IronZIP 암호로 보호된 ZIP 파일을 처리할 수 있습니다. IronZipArchive.ExtractArchiveToDirectory() 메서드를 사용하여 파일을 압축 해제할 때 암호를 추가 매개변수로 지정하면 됩니다.

ZIP 파일 처리에 System.IO.Compression 대신 IronZIP 사용하는 것의 장점은 무엇입니까?

IronZIP System.IO.Compression에 비해 여러 압축 형식 지원, 암호 보호, 사용자 지정 압축 수준, 압축 해제 없이 파일을 추가하거나 삭제하여 압축 파일을 편집할 수 있는 기능 등 고급 기능을 제공합니다.

IronZIP 어떻게 다양한 .NET 버전과의 호환성을 보장합니까?

IronZIP 다양한 .NET 버전을 지원하여 크로스 호환성을 보장하므로 개발자는 다양한 플랫폼 및 프레임워크에서 실행되는 애플리케이션에 ZIP 파일 처리 기능을 통합할 수 있습니다.

IronZIP ZIP 압축 파일 처리를 위해 어떤 고급 기능을 제공하나요?

IronZIP ZIP, TAR, GZIP, BZIP2 등 다양한 압축 형식 생성 및 압축 해제, 암호 보호, 사용자 지정 압축 수준 설정, 파일 압축 해제 없이도 가능한 포괄적인 편집 기능 등 고급 기능을 제공합니다.

IronZIP 사용하여 ZIP 압축 파일 내의 파일 속성을 관리할 수 있습니까?

네, IronZIP 사용하면 파일을 먼저 압축 해제하지 않고도 ZIP 아카이브 내의 주석과 같은 파일 속성을 관리할 수 있어 아카이브 관리의 유연성과 효율성을 높일 수 있습니다.

C#에서 ZIP 파일 생성 및 압축 해제를 자동화하는 방법은 무엇인가요?

C#에서 IronZIP static void Main() 메서드에 사용하면 ZIP 파일 생성 및 압축 해제를 자동화할 수 있습니다. 이를 통해 파일을 아카이브에 추가하거나, 데이터를 추출하거나, 기존 아카이브를 업데이트하는 등의 프로세스를 프로그래밍 방식으로 자동화할 수 있습니다.

IronZIP 전체 파일 시스템 처리를 지원합니까?

네, IronZIP 전체 파일 시스템의 압축 및 압축 해제를 지원하므로 대용량 데이터를 효율적으로 처리하는 데 적합합니다.

커티스 차우
기술 문서 작성자

커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다.

커티스는 개발 분야 외에도 사물 인터넷(IoT)에 깊은 관심을 가지고 있으며, 하드웨어와 소프트웨어를 통합하는 혁신적인 방법을 연구합니다. 여가 시간에는 게임을 즐기거나 디스코드 봇을 만들면서 기술에 대한 애정과 창의성을 결합합니다.

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me