namespace Qxado.IO
{
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.IO.Compression;
using System.Runtime.Serialization.Formatters.Binary;
///
/// ???/?????????
///
public class CompressHelper
{
#region ICompress ???
public byte[] Compress(object obj)
{
if (obj == null) return new byte[0];
MemoryStream ms = new MemoryStream();
DeflateStream zip = new DeflateStream(ms, CompressionMode.Compress, true);
try
{
BinaryFormatter serializer = new BinaryFormatter();
serializer.Serialize(zip, obj);
zip.Close();
byte[] ary = ms.ToArray();
ms.Close();
return ary;
}
finally
{
zip.Close();
ms.Close();
}
}
public object DeCompress(byte[] bytes)
{
if (bytes == null) return null;
if (bytes.Length == 0) return null;
MemoryStream ms = new MemoryStream(bytes);
DeflateStream UnZip = new DeflateStream(ms, CompressionMode.Decompress);
try
{
BinaryFormatter serializer = new BinaryFormatter();
object obj = serializer.Deserialize(UnZip);
UnZip.Close();
ms.Close();
return obj;
}
finally
{
UnZip.Close();
ms.Close();
}
}
#endregion
}
}