C# 에서 기본적으로 제공되는 압축 해제 기능으로
System.IO.Compression 가 있습니다.
암호화는 지원하지 않지만 기본 내장되어 있고 사용도 편리합니다.
ZipFile 클래스 사용을 위해선 System.IO.Compression.FileSystem 참조가 필요합니다.
using System;
using System.Diagnostics;
using System.IO;
using System.IO.Compression; //ZipFile 에 필요
using System.Windows.Forms;
namespace WindowsFormsApp13
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e) //zip 생성
{
string workFolder = Application.StartupPath;
string targetDirectory = Path.Combine(workFolder, "TestFiles");
string savePath = Path.Combine(workFolder, "Zipfile.zip");
if (File.Exists(savePath)) //기존 파일은 제거
{
File.Delete(savePath);
}
ZipFile.CreateFromDirectory(targetDirectory, savePath);
Process.Start(workFolder); //폴더 열어서 확인
}
private void button2_Click(object sender, EventArgs e) //zip 해제
{
string workFolder = Application.StartupPath;
string targetPath = Path.Combine(workFolder, "Zipfile.zip");
string saveFolder = Path.Combine(workFolder, "unZip");
if (Directory.Exists(saveFolder)) //기존 파일은 제거
{
Directory.Delete(saveFolder, true);
}
ZipFile.ExtractToDirectory(targetPath, saveFolder);
Process.Start(workFolder); //폴더 열어서 확인
}
}
}
그 밖에도 다른 라이브러리들이 있는데, NuGet 에서 받아서 사용이 가능합니다.
GPT에서 제공한 표를 남겨두겠습니다.
- GPT 정리 내용
라이브 러리 암호화 포맷 속도 최신 유지장점 요약 (2025년 10월 06일 기준!)
라이브러리 | 암호화 | 포맷 | 속도 | 최신 유지 | 장점 요약 |
System.IO.Compression | ❌ | ZIP | ✅ 빠름 | ✅ 최신 | .NET 내장, 간단 |
DotNetZip (Ionic.Zip) | ✅ | ZIP | ⚪ 보통 | ❌ 구버전 | 암호 ZIP 지원 |
SharpZipLib | ✅ | ZIP, TAR, GZIP 등 | ⚪ 보통 | ✅ 유지보수 중 | 다양한 포맷 |
SharpCompress | ⚠️ 제한적 | ZIP, 7z, TAR 등 | ⚪ 보통 | ✅ 최신 | 스트리밍 지원 |
SevenZipSharp | ✅ AES | 7z | ⚠️ 느림 | ⚪ 부분적 | 고압축, 보안 |
DotNetZip 간단 사용법 예시
using Ionic.Zip;
// 압축
using (var zip = new ZipFile())
{
zip.Password = "1234"; // 암호 설정
zip.AddDirectory(@"C:\TestSource");
zip.Save(@"C:\Result.zip");
}
// 해제
using (var zip = ZipFile.Read(@"C:\Result.zip"))
{
zip.Password = "1234";
zip.ExtractAll(@"C:\Extracted", ExtractExistingFileAction.OverwriteSilently);
}
'C# > Windows Form' 카테고리의 다른 글
[C# Windows Form] 비동기 Custom Form 종료, 파일 열기, 프린트 등 창 닫기 (BlockingCollection - queue) (0) | 2025.09.08 |
---|---|
[C# Windows Form] Drag & Drop 기능 사용하기 (파일, 폴더 불러오기) (1) | 2025.08.15 |
[C# Windows Form] Tray 아이콘 잔상 제거하기 (Win32 API 사용) (3) | 2025.07.29 |
[C# Windows Form] Win32 API EnumWindows 를 사용한 프로그램 타이틀 가져오기 (웹 브라우저 따라다니기) (1) | 2025.07.28 |
[C# Windows Form] 프로그램 Tray 아이콘 만들기, 감추기 (0) | 2025.07.16 |