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

■ GZIP 압축하기

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

using System;

using System.IO;

using System.IO.Compression;

 

#region GZIP 압축하기 - CompressGZIP(sourceStream, targetStream)

 

/// <summary>

/// GZIP 압축하기

/// </summary>

/// <param name="sourceStream">소스 스트림</param>

/// <param name="targetStream">타겟 스트림</param>

/// <returns>압축 바이트 수</returns>

public long CompressGZIP(Stream sourceStream, Stream targetStream)

{

    try

    {

        using(GZipStream gZipStream = new GZipStream(targetStream, CompressionMode.Compress))

        {

            return StreamManager.Write(sourceStream, gZipStream);

        }

    }

    catch

    {

        return -1L;

    }

}

 

#endregion

 

#region GZIP 압축하기 - CompressGZIP(sourceFilePath, targetFilePath)

 

/// <summary>

/// GZIP 압축하기

/// </summary>

/// <param name="sourceFilePath">소스 파일 경로</param>

/// <param name="targetFilePath">타겟 파일 경로</param>

/// <returns>압축 바이트 수</returns>

public long CompressGZIP(string sourceFilePath, string targetFilePath)

{

    try

    {

        using(FileStream sourceFileStream = new FileStream(sourceFilePath, FileMode.Open, FileAccess.Read))

        {

            using(FileStream targetFileStream = new FileStream(targetFilePath, FileMode.Create, FileAccess.Write))

            {

                return CompressGZIP(sourceFileStream, targetFileStream);

            }

        }

    }

    catch

    {

        return -1L;

    }

}

 

#endregion

 

#region GZIP 압축하기 - CompressGZIP(sourceByteArray)

 

/// <summary>

/// GZIP 압축하기

/// </summary>

/// <param name="sourceByteArray">소스 바이트 배열</param>

/// <returns>압축 바이트 배열</returns>

public byte[] CompressGZIP(byte[] sourceByteArray)

{

    try

    {

        using(MemoryStream sourceMemoryStream = new MemoryStream(sourceByteArray))

        {

            using(MemoryStream targetMemoryStream = new MemoryStream())

            {

                if(CompressGZIP(sourceMemoryStream, targetMemoryStream) == -1)

                {

                    return null;

                }

 

                return targetMemoryStream.ToArray();

            }

        }

    }

    catch

    {

        return null;

    }

}

 

#endregion

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

Posted by 사용자 icodebroker
TAG

댓글을 달아 주세요