[성현모] CPXV2 Init
This commit is contained in:
@ -0,0 +1,141 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.IO;
|
||||
using System.IO.Compression;
|
||||
using System.Linq;
|
||||
using System.Runtime.Serialization.Formatters.Binary;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
// 데이터 압축/해제 관련
|
||||
namespace SystemX.Common.Archive
|
||||
{
|
||||
public static class XDataArchive
|
||||
{
|
||||
public static byte[] CompressDeflateByteToByte(byte[] ucData)
|
||||
{
|
||||
byte[] ucCompressedByte;
|
||||
using (MemoryStream ms = new MemoryStream())
|
||||
{
|
||||
using (DeflateStream ds = new DeflateStream(ms, CompressionMode.Compress))
|
||||
{
|
||||
ds.Write(ucData, 0, ucData.Length);
|
||||
}
|
||||
ucCompressedByte = ms.ToArray();
|
||||
}
|
||||
|
||||
return ucCompressedByte;
|
||||
}
|
||||
public static byte[] CompressGZipByteToByte(byte[] ucData)
|
||||
{
|
||||
byte[] ucCompressedByte;
|
||||
using (MemoryStream ms = new MemoryStream())
|
||||
{
|
||||
using (GZipStream gs = new GZipStream(ms, CompressionMode.Compress))
|
||||
{
|
||||
gs.Write(ucData, 0, ucData.Length);
|
||||
}
|
||||
ucCompressedByte = ms.ToArray();
|
||||
}
|
||||
|
||||
return ucCompressedByte;
|
||||
}
|
||||
public static byte[] DecompressDeflateByteToByte(byte[] ucCompressedData)
|
||||
{
|
||||
byte[] ucDecompressedByte;
|
||||
|
||||
MemoryStream resultStream = new MemoryStream();
|
||||
using (MemoryStream ms = new MemoryStream(ucCompressedData))
|
||||
{
|
||||
using (DeflateStream ds = new DeflateStream(ms, CompressionMode.Decompress))
|
||||
{
|
||||
ds.CopyTo(resultStream);
|
||||
ds.Close();
|
||||
|
||||
ucDecompressedByte = resultStream.ToArray();
|
||||
}
|
||||
}
|
||||
|
||||
return ucDecompressedByte;
|
||||
}
|
||||
public static byte[] DecompressGZipByteToByte(byte[] ucCompressedData)
|
||||
{
|
||||
byte[] ucDecompressedByte;
|
||||
|
||||
MemoryStream resultStream = new MemoryStream();
|
||||
using (MemoryStream ms = new MemoryStream(ucCompressedData))
|
||||
{
|
||||
using (GZipStream gs = new GZipStream(ms, CompressionMode.Decompress))
|
||||
{
|
||||
gs.CopyTo(resultStream);
|
||||
gs.Close();
|
||||
|
||||
ucDecompressedByte = resultStream.ToArray();
|
||||
}
|
||||
}
|
||||
|
||||
return ucDecompressedByte;
|
||||
}
|
||||
public static byte[] CompressDatasetToByte(DataSet ds)
|
||||
{
|
||||
//1. 데이터셋 Serialize
|
||||
ds.RemotingFormat = SerializationFormat.Binary;
|
||||
BinaryFormatter bf = new BinaryFormatter();
|
||||
MemoryStream ms = new MemoryStream();
|
||||
bf.Serialize(ms, ds);
|
||||
byte[] inbyt = ms.ToArray();
|
||||
|
||||
//2. 데이터 압축
|
||||
System.IO.MemoryStream objStream = new MemoryStream();
|
||||
System.IO.Compression.DeflateStream objZS = new System.IO.
|
||||
Compression.DeflateStream(objStream, System.IO.Compression.
|
||||
CompressionMode.Compress);
|
||||
objZS.Write(inbyt, 0, inbyt.Length);
|
||||
objZS.Flush();
|
||||
objZS.Close();
|
||||
|
||||
//3. 데이터 리턴
|
||||
return objStream.ToArray();
|
||||
}
|
||||
public static DataSet DecompressByteToDataset(byte[] bytDs)
|
||||
{
|
||||
DataSet outDs = new DataSet();
|
||||
MemoryStream inMs = new MemoryStream(bytDs);
|
||||
inMs.Seek(0, 0); //스트림으로 가져오기
|
||||
|
||||
//1. 압축객체 생성- 압축 풀기
|
||||
DeflateStream zipStream = new DeflateStream(inMs,
|
||||
CompressionMode.Decompress, true);
|
||||
byte[] outByt = ReadFullStreamToByte(zipStream);
|
||||
zipStream.Flush();
|
||||
zipStream.Close();
|
||||
MemoryStream outMs = new MemoryStream(outByt);
|
||||
outMs.Seek(0, 0); //2. 스트림으로 다시변환
|
||||
outDs.RemotingFormat = SerializationFormat.Binary;
|
||||
|
||||
//3. 데이터셋으로 Deserialize
|
||||
BinaryFormatter bf = new BinaryFormatter();
|
||||
outDs = (DataSet)bf.Deserialize(outMs, null);
|
||||
|
||||
return outDs;
|
||||
}
|
||||
private static byte[] ReadFullStreamToByte(Stream stream)
|
||||
{
|
||||
//스트림을 Byte 배열로 변환
|
||||
byte[] buffer = new byte[1000000];
|
||||
using (MemoryStream ms = new MemoryStream())
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
int read = stream.Read(buffer, 0, buffer.Length);
|
||||
|
||||
if (read <= 0)
|
||||
return ms.ToArray();
|
||||
|
||||
ms.Write(buffer, 0, read);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user