728x90
반응형
728x170
using System;
using System.IO;
using ICSharpCode.SharpZipLib.Zip;
#region 바이트 배열 압축하기 - Compress(sourceByteArray)
/// <summary>
/// 바이트 배열 압축하기
/// </summary>
/// <param name="sourceByteArray">소스 바이트 배열</param>
/// <returns>타겟 바이트 배열</returns>
public byte[] CompressByteArray(byte[] sourceByteArray)
{
string guid = Guid.NewGuid().ToString();
MemoryStream targetMemoryStream = new MemoryStream();
ZipOutputStream zipOutputStream = new ZipOutputStream(targetMemoryStream);
zipOutputStream.SetLevel(9);
zipOutputStream.SetComment(guid);
using(MemoryStream sourceMemoryStream = new MemoryStream(sourceByteArray))
{
zipOutputStream.PutNextEntry(new ZipEntry(guid));
byte[] bufferByteArray = new byte[2048];
while(true)
{
int readCount = sourceMemoryStream.Read(bufferByteArray, 0, bufferByteArray.Length);
if(readCount == 0)
{
break;
}
zipOutputStream.Write(bufferByteArray, 0, readCount);
}
zipOutputStream.CloseEntry();
}
byte[] targetByteArray = targetMemoryStream.ToArray();
zipOutputStream.Finish();
zipOutputStream.Close();
return targetByteArray;
}
#endregion
#region 바이트 배열 압축 해제하기 - DecompressByteArray(sourceByteArray)
/// <summary>
/// 바이트 배열 압축 해제하기
/// </summary>
/// <param name="sourceByteArray">소스 바이트 배열</param>
/// <returns>타겟 바이트 배열</returns>
public static byte[] DecompressByteArray(byte[] sourceByteArray)
{
MemoryStream sourceMemoryStream = new MemoryStream(sourceByteArray);
ZipInputStream zipInputStream = new ZipInputStream(sourceMemoryStream);
byte[] bufferByteArray = new byte[2048];
byte[] targetByteArray = null;
ZipEntry zipEntry = zipInputStream.GetNextEntry();
if(zipEntry == null)
{
return targetByteArray;
}
using(MemoryStream targetMemoryStream = new MemoryStream())
{
while(true)
{
int readCount = zipInputStream.Read(bufferByteArray, 0, 2048);
if(readCount == 0)
{
break;
}
targetMemoryStream.Write(bufferByteArray, 0, readCount);
}
targetByteArray = targetMemoryStream.ToArray();
}
zipInputStream.Close();
return targetByteArray;
}
#endregion
728x90
반응형
그리드형(광고전용)
'C# > Common' 카테고리의 다른 글
[C#/COMMON] 하위 바이트 구하기 (0) | 2014.12.03 |
---|---|
[C#/COMMON] 상위 워드 구하기 (0) | 2014.12.03 |
[C#/COMMON] 하위 워드 구하기 (0) | 2014.12.03 |
[C#/COMMON] 익명 타입 사용하기 (0) | 2014.12.03 |
[C#/COMMON] ZIP 파일 압축/압축 해제하기 (0) | 2014.12.03 |
[C#/COMMON] Math 클래스 : 각도 구하기 (0) | 2014.12.03 |
[C#/COMMON] Random 클래스 : Next 메소드 사용시 주의 사항 (0) | 2014.12.03 |
[C#/COMMON] SerialPort 클래스 : 에러 발생시 처리하기 (0) | 2014.12.03 |
[C#/COMMON] SerialPort 클래스 : 직렬 통신하기 (0) | 2014.12.03 |
[C#/COMMON] SerialPort 클래스 : 직렬 포트 구하기 (0) | 2014.12.03 |
댓글을 달아 주세요