첨부 소스 코드는 나눔고딕코딩 폰트를 사용합니다.
728x90
반응형
728x170

▶ ZipArchive 클래스 : ZIP 파일 생성하기/추출하기 예제

CreateZIPFile("d:\\source", "d:\\test.zip");
ExtractZIPFile("d:\\test.zip", "d:\\target");

 

728x90

 

▶ ZipArchive 클래스 : ZIP 파일 생성하기/추출하기

using System.IO;
using System.IO.Compression;

#region ZIP 파일 생성하기 - CreateZIPFile(backupFolder, zipFilePath)

/// <summary>
/// ZIP 파일 생성하기
/// </summary>
/// <param name="backupFolder">백업 폴더</param>
/// <param name="zipFilePath">ZIP 파일 경로</param>
public void CreateZIPFile(string backupFolder, string zipFilePath)
{
    using(FileStream fileStream = new FileStream(zipFilePath, FileMode.Create, FileAccess.ReadWrite))
    {
        using(ZipArchive zipArchive = new ZipArchive(fileStream, ZipArchiveMode.Create))
        {
            foreach(string filePath in Directory.EnumerateFiles(backupFolder, "*.*", SearchOption.AllDirectories))
            {
                string relativePath = filePath.Substring(backupFolder.Length + 1);

                try
                {
                    zipArchive.CreateEntryFromFile(filePath, relativePath);
                }
                catch(PathTooLongException)
                {
                }
            }
        }
    }
}

#endregion
#region ZIP 파일 추출하기 - ExtractZIPFile(backupFolderPath, zipFilePath)

/// <summary>
/// ZIP 파일 추출하기
/// </summary>
/// <param name="zipFilePath">ZIP 파일 경로</param>
/// <param name="backupFolder">백업 폴더</param>
public void ExtractZIPFile(string zipFilePath, string backupFolder)
{
    using(ZipArchive zipArchive = ZipFile.OpenRead(zipFilePath))
    {
        foreach(ZipArchiveEntry zipArchiveEntry in zipArchive.Entries)
        {
            try
            {
                string folderPath = Path.GetDirectoryName(Path.Combine(backupFolder, zipArchiveEntry.FullName));

                if(!Directory.Exists(folderPath))
                {
                    Directory.CreateDirectory(folderPath);
                }

                zipArchiveEntry.ExtractToFile(Path.Combine(backupFolder, zipArchiveEntry.FullName));
            }
            catch(PathTooLongException)
            {
            }
        }
    }
}

#endregion

※ 아래 닷넷 어셈블리를 참조한다.

  • System.IO.Compression
  • System.IO.Compression.FileSystem
728x90
반응형
그리드형(광고전용)
Posted by icodebroker

댓글을 달아 주세요