첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
유용한 소스 코드가 있으면 icodebroker@naver.com으로 보내주시면 감사합니다.
블로그 자료는 자유롭게 사용하세요.

■ ZIP 파일 압축/압축 해제하기 예제

----------------------------------------------------------------------------------------------------

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

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

----------------------------------------------------------------------------------------------------

 

■ 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

 

Posted by 사용자 icodebroker
TAG

댓글을 달아 주세요