123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- using System;
- using System.IO;
- using System.IO.Compression;
- using System.Runtime.Serialization.Formatters.Binary;
- namespace WWPipeLine.Commons.SerializeHelper
- {
-
-
-
-
- public class BinaryFormatterHelper
- {
- private BinaryFormatterHelper()
- {
- }
- #region 序列化
-
-
-
-
-
- public static Byte[] Serialize<T>(T obj) where T : class
- {
- try
- {
-
- MemoryStream ms = new MemoryStream();
-
- BinaryFormatter bf = new BinaryFormatter();
- bf.Serialize(ms, obj);
- ms.Position = 0;
- byte[] buffers = ms.ToArray();
-
- ms.Close();
- ms.Dispose();
- return Compress(buffers);
- }
- catch
- {
- return new byte[] { };
- }
- }
-
-
-
-
-
- public static byte[] Compress(byte[] buffer)
- {
- if (buffer == null || buffer.Length == 0)
- {
- return buffer;
- }
-
- MemoryStream ms = new MemoryStream();
-
- GZipStream gzip = new GZipStream(ms, CompressionMode.Compress, true);
- gzip.Write(buffer, 0, buffer.Length);
-
- gzip.Close();
- gzip.Dispose();
- ms.Position = 0;
- byte[] returnBuffer = new byte[ms.Length];
- ms.Read(returnBuffer, 0, int.Parse(ms.Length.ToString()));
-
- ms.Close();
- ms.Dispose();
- return returnBuffer;
- }
- #endregion 序列化
- #region 反序列化
-
-
-
-
-
- public static T Deserilize<T>(byte[] buffer) where T : class
- {
- try
- {
- byte[] debuffer = Decompress(buffer);
-
- BinaryFormatter bf = new BinaryFormatter();
-
- MemoryStream ms = new MemoryStream(debuffer);
- ms.Position = 0;
- T obj = bf.Deserialize(ms) as T;
-
- ms.Close();
- ms.Dispose();
- return obj;
- }
- catch
- {
- return null;
- }
- }
-
-
-
-
-
- public static byte[] Decompress(byte[] buffer)
- {
- if (buffer == null || buffer.Length == 0)
- {
- return buffer;
- }
- try
- {
-
- MemoryStream ms = new MemoryStream(buffer);
- ms.Position = 0;
-
- GZipStream gzip = new GZipStream(ms, CompressionMode.Decompress);
- byte[] rebuffer = new byte[1024];
-
- MemoryStream msre = new MemoryStream();
- while (true)
- {
- int readcount = gzip.Read(rebuffer, 0, rebuffer.Length);
- if (readcount > 0)
- msre.Write(rebuffer, 0, readcount);
- else
- break;
- }
- msre.Close();
- byte[] buffers = msre.ToArray();
- msre.Dispose();
-
- gzip.Close();
- gzip.Dispose();
-
- ms.Close();
- ms.Dispose();
- return buffers;
- }
- catch
- {
- return new byte[] { };
- }
- }
- #endregion 反序列化
- }
- }
|