1. 제품
  2.   압축
  3.   .NET
  4.   SharpZipLib
 
  

압축 파일 형식용 C# .NET 라이브러리

ZIP, GZIP, TAR 및 BZIP2와 같은 파일 아카이버 형식을 위한 오픈 소스 무료 .NET API

SharpZipLib 라이브러리는 .NET 플랫폼용으로 완전히 C#으로 작성되었습니다. 이는 어셈블리로 구현되므로 다른 프로젝트(모든 .NET 언어)에 통합할 수 있습니다.

원래 GNU Classpath java.util.zip 라이브러리에서 이식되었으므로 GZIP 및 ZIP 압축이 필요한 SharpDevelop과 함께 사용할 수 있습니다. 나중에 높은 사용자 요구로 인해 BZIP2 및 Tar 보관 파일도 라이브러리에 포함되었습니다.

Previous Next

SharpZipLib 시작하기

SharpZipLib를 구성하려면 .NET Framework 4.5 이상이 필요합니다. 전제 조건을 충족하면 GitHub에서 리포지토리를 수동으로 다운로드하거나 NuGet에서 어셈블리를 직접 가져올 수 있습니다.

SharpZipLib를 설치하는 권장 방법은 NuGet 패키지로 제공되는 NuGet에서 제공하는 것입니다. 

NuGet에서 SharpZipLib 설치

 Install-Package SharpZipLib

NET 라이브러리를 사용하여 ZIP 파일 생성 및 추출

SharpZipLib를 사용하면 소프트웨어 개발자가 자신의 .NET 응용 프로그램 내에서 ZIP 파일을 만들 수 있습니다. 개발자는 디렉토리 내에서 사용 가능한 모든 파일을 쉽게 압축하고 단일 zip 파일에 할당할 수 있습니다. ZIP은 가장 널리 사용되는 압축 파일 형식 중 하나이며 사용자에게 파일 크기를 줄일 수 있는 기능을 제공합니다. API는 또한 ZIP 파일의 내용을 사용자가 선택한 위치로 추출하는 것을 지원합니다.

ZIP에서 파일 추출 - C#

// Open zip file
using (Stream fsInput = File.OpenRead("D:\\input.zip"))
using (var zf = new ZipFile(fsInput))
{
  // Set password if required
  zf.Password = "12345";
  // Unzip data
  foreach (ZipEntry zipEntry in zf)
  {
    if (!zipEntry.IsFile)
    {
      // Ignore directories
      continue;
    }
    String entryFileName = zipEntry.Name;
    var directoryName = "D:\\output\\test";
    if (directoryName.Length > 0)
    {
      Directory.CreateDirectory(directoryName);
    }
    var buffer = new byte[4096];
    using (var zipStream = zf.GetInputStream(zipEntry))
    using (Stream fsOutput = File.Create("data.zip"))
    {
      StreamUtils.Copy(zipStream, fsOutput, buffer);
    }
  }
}

암호로 보호된 ZIP 파일 만들기

SharpZipLib는 소프트웨어 개발자에게 폴더 내의 모든 파일을 ZIP 파일로 압축하고 생성된 파일의 암호를 정의할 수 있는 기능을 제공합니다. 보호 없이 ZIP 파일을 생성하려면 값을 null로 설정하거나 암호 보호 없이 파일을 떠나도록 선언하지 마십시오. 많은 수의 파일을 지원합니다.

암호로 보호된 ZIP 파일 만들기 - C#

// Create a new ZIP file 
using (FileStream fsOut = File.Create("D:\\output.zip"))
using (var zipStream = new ZipOutputStream(fsOut))
{
  //0-9, 9 being the highest level of compression
  zipStream.SetLevel(3);
  // Set password
  zipStream.Password = "12345";
  // Add files
  var files = Directory.GetFiles("D:\\sample");
  foreach (var filename in files)
  {
    var fi = new FileInfo(filename);
    // Make the name in zip based on the folder
    var entryName = filename.Substring(1);
    // Remove drive from name and fixe slash direction
    entryName = ZipEntry.CleanName(entryName);
    var newEntry = new ZipEntry(entryName);
    // Note the zip format stores 2 second granularity
    newEntry.DateTime = fi.LastWriteTime;
    newEntry.Size = fi.Length;
    zipStream.PutNextEntry(newEntry);
    var buffer = new byte[4096];
    using (FileStream fsInput = File.OpenRead(filename))
    {
      StreamUtils.Copy(fsInput, zipStream, buffer);
    }
    zipStream.CloseEntry();
  }
}
 한국인