SerializerByBinary.cs 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.IO.Compression;
  5. using System.Runtime.Serialization;
  6. using System.Runtime.Serialization.Formatters.Binary;
  7. using SAGA.DotNetUtils.Extend;
  8. using SAGA.DotNetUtils.Others;
  9. namespace SAGA.DotNetUtils.Serializer
  10. {
  11. public class SerializerByBinary
  12. {
  13. public static object DeSerializeBinary(MemoryStream memStream)
  14. {
  15. using (memStream)
  16. {
  17. memStream.Position = 0L;
  18. BinaryFormatter formatter = new BinaryFormatter {
  19. Binder = new UBinder("DLL")
  20. };
  21. return formatter.Deserialize(memStream);
  22. }
  23. }
  24. public static object DeSerializeBytes(byte[] value)
  25. {
  26. return ToObject(value);
  27. }
  28. public static object DeSerializeObject(string strSerializInfo)
  29. {
  30. if (strSerializInfo == null)
  31. {
  32. return null;
  33. }
  34. MemoryStream memStream = new MemoryStream(CompressHelper.DeCompress(strSerializInfo));
  35. return DeSerializeBinary(memStream);
  36. }
  37. public static object DeSerializeObjectNoneCompress(string strSerializInfo)
  38. {
  39. if (strSerializInfo == null)
  40. {
  41. return null;
  42. }
  43. return ToObject(Convert.FromBase64String(strSerializInfo));
  44. }
  45. public static object DeSerializeObjectSystemCompress(string strSerializInfo)
  46. {
  47. if (strSerializInfo == null)
  48. {
  49. return null;
  50. }
  51. byte[] buffer = new byte[100];
  52. MemoryStream stream = new MemoryStream(Convert.FromBase64String(strSerializInfo)) {
  53. Position = 0L
  54. };
  55. using (GZipStream stream2 = new GZipStream(stream, CompressionMode.Decompress))
  56. {
  57. using (MemoryStream stream3 = new MemoryStream())
  58. {
  59. int count = stream2.Read(buffer, 0, buffer.Length);
  60. while (count > 0)
  61. {
  62. stream3.Write(buffer, 0, count);
  63. count = stream2.Read(buffer, 0, buffer.Length);
  64. if (count <= 0)
  65. {
  66. break;
  67. }
  68. }
  69. stream3.Flush();
  70. buffer = stream3.ToArray();
  71. }
  72. }
  73. return ToObject(buffer);
  74. }
  75. public static object GetProjData(string strProjFile)
  76. {
  77. object obj2 = null;
  78. if (!File.Exists(strProjFile))
  79. {
  80. return null;
  81. }
  82. string str = DateTime.Now.ToStringExt("yyyy-MM-dd HH:mm:ss");
  83. string str2 = Path.Combine(Path.GetDirectoryName(strProjFile), str);
  84. string strTargetFile = Path.Combine(str2, Path.GetFileName(strProjFile));
  85. Directory.CreateDirectory(str2);
  86. CompressHelper.DeCompressFile(strProjFile, strTargetFile);
  87. IFormatter formatter = new BinaryFormatter {
  88. Binder = new UBinder("DLL")
  89. };
  90. Stream serializationStream = new FileStream(strTargetFile, FileMode.Open, FileAccess.Read, FileShare.Read);
  91. obj2 = formatter.Deserialize(serializationStream);
  92. serializationStream.Close();
  93. ComMethod.FileDelete(strTargetFile);
  94. ComMethod.FolderDelete(str2);
  95. return obj2;
  96. }
  97. public static object GetProjData2(string strProjFile, List<Type> listTypes)
  98. {
  99. object obj2 = null;
  100. if (!File.Exists(strProjFile))
  101. {
  102. return null;
  103. }
  104. IFormatter formatter = new BinaryFormatter {
  105. Binder = new UBinder(listTypes)
  106. };
  107. Stream serializationStream = new FileStream(strProjFile, FileMode.Open, FileAccess.Read, FileShare.Read);
  108. try
  109. {
  110. obj2 = formatter.Deserialize(serializationStream);
  111. }
  112. catch (Exception exception)
  113. {
  114. MessageShowBase.Show(exception);
  115. }
  116. finally
  117. {
  118. serializationStream.Close();
  119. }
  120. return obj2;
  121. }
  122. public static void SaveProjData(string strProjFile, object objProjData)
  123. {
  124. string str = DateTime.Now.ToStringExt("yyyy-MM-dd HH:mm:ss");
  125. string str2 = Path.Combine(Path.GetDirectoryName(strProjFile), str);
  126. string path = Path.Combine(str2, Path.GetFileName(strProjFile));
  127. Directory.CreateDirectory(str2);
  128. IFormatter formatter = new BinaryFormatter();
  129. Stream serializationStream = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.None);
  130. formatter.Serialize(serializationStream, objProjData);
  131. serializationStream.Close();
  132. ComMethod.FileDelete(strProjFile);
  133. CompressHelper.CompressFile(path, strProjFile);
  134. ComMethod.FileDelete(path);
  135. ComMethod.FolderDelete(str2);
  136. }
  137. public static void SaveProjData2(string strProjFile, object objProjData)
  138. {
  139. IFormatter formatter = new BinaryFormatter();
  140. Stream serializationStream = new FileStream(strProjFile, FileMode.Create, FileAccess.Write, FileShare.None);
  141. try
  142. {
  143. formatter.Serialize(serializationStream, objProjData);
  144. }
  145. catch (Exception exception)
  146. {
  147. MessageShowBase.Show(exception);
  148. }
  149. finally
  150. {
  151. serializationStream.Close();
  152. }
  153. }
  154. public static MemoryStream SerializeBinary(object request)
  155. {
  156. if (request == null)
  157. {
  158. return null;
  159. }
  160. BinaryFormatter formatter = new BinaryFormatter {
  161. Binder = new UBinder("DLL")
  162. };
  163. MemoryStream serializationStream = new MemoryStream();
  164. formatter.Serialize(serializationStream, request);
  165. serializationStream.Flush();
  166. serializationStream.Position = 0L;
  167. return serializationStream;
  168. }
  169. public static byte[] SerializeBytes(object value)
  170. {
  171. return ToBytes(value);
  172. }
  173. public static string SerializeObject(object value)
  174. {
  175. if (value == null)
  176. {
  177. return null;
  178. }
  179. using (MemoryStream stream = SerializeBinary(value))
  180. {
  181. return CompressHelper.Compress(stream.ToArray());
  182. }
  183. }
  184. public static string SerializeObjectNoneCompress(object value)
  185. {
  186. if (value == null)
  187. {
  188. return null;
  189. }
  190. return Convert.ToBase64String(ToBytes(value));
  191. }
  192. public static string SerializeObjectSystemCompress(object value)
  193. {
  194. if (value == null)
  195. {
  196. return null;
  197. }
  198. byte[] buffer = ToBytes(value);
  199. using (MemoryStream stream = new MemoryStream())
  200. {
  201. using (GZipStream stream2 = new GZipStream(stream, CompressionMode.Compress, true))
  202. {
  203. stream2.Write(buffer, 0, buffer.Length);
  204. stream2.Flush();
  205. stream2.Close();
  206. }
  207. buffer = stream.ToArray();
  208. stream.Close();
  209. return Convert.ToBase64String(buffer);
  210. }
  211. }
  212. public static byte[] ToBytes(object value)
  213. {
  214. if (value == null)
  215. {
  216. return null;
  217. }
  218. using (MemoryStream stream = new MemoryStream())
  219. {
  220. new BinaryFormatter().Serialize(stream, value);
  221. return stream.ToArray();
  222. }
  223. }
  224. public static object ToObject(byte[] serializedObject)
  225. {
  226. if (serializedObject == null)
  227. {
  228. return null;
  229. }
  230. using (MemoryStream stream = new MemoryStream(serializedObject))
  231. {
  232. BinaryFormatter formatter = new BinaryFormatter {
  233. Binder = new UBinder("DLL")
  234. };
  235. return formatter.Deserialize(stream);
  236. }
  237. }
  238. public static object ToObject(byte[] serializedObject, List<Type> listTypes)
  239. {
  240. if (serializedObject == null)
  241. {
  242. return null;
  243. }
  244. using (MemoryStream stream = new MemoryStream(serializedObject))
  245. {
  246. BinaryFormatter formatter = new BinaryFormatter {
  247. Binder = new UBinder(listTypes)
  248. };
  249. return formatter.Deserialize(stream);
  250. }
  251. }
  252. }
  253. }