再弄一片文章凑个4篇文章的数,主要是用于XML和 Binary序列化和反序列化的类
2013-06-21 14:26
363 查看
using System.IO; using System.Runtime.Serialization.Formatters.Binary; using System.Xml.Serialization; namespace NOAS.PublicOpinionMonitor.Common { public class SerializeUtility { public enum SerializeType { XML, Binary } #region 序列化 /// <summary> /// 序列化 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="t"></param> /// <param name="savePath"></param> /// <param name="type"></param> public static void Serialize<T>(T t, string savePath, SerializeType type) { switch (type) { case SerializeType.XML: SerializeToXML<T>(t, savePath); break; case SerializeType.Binary: SerializeToBinary<T>(t, savePath); break; default: break; } } /// <summary> /// 序列化为XML格式文件 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="t"></param> /// <param name="savePath"></param> private static void SerializeToXML<T>(T t, string savePath) { if (!Directory.GetParent(savePath).Exists) Directory.GetParent(savePath).Create(); XmlSerializer ser = new XmlSerializer(t.GetType()); if (File.Exists(savePath)) { File.Delete(savePath); } using (FileStream stream = new FileStream(savePath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite)) { ser.Serialize(stream, t); } } /// <summary> /// 序列化为Binary格式文件 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="t"></param> /// <param name="savePath"></param> private static void SerializeToBinary<T>(T t, string savePath) { if (!Directory.GetParent(savePath).Exists) Directory.GetParent(savePath).Create(); BinaryFormatter serilazer = new BinaryFormatter(); using (FileStream stream = new FileStream(savePath, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite)) { serilazer.Serialize(stream, t); } } #endregion #region 反序列化 public static T DeSerialize<T>(string readPath, SerializeType type) { switch (type) { case SerializeType.XML: return DeSerializeXML<T>(readPath); case SerializeType.Binary: return DeSerializeBinary<T>(readPath); default: return default(T); } } /// <summary> /// 反序列化XML文件 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="savePath"></param> /// <returns></returns> private static T DeSerializeXML<T>(string readPath) { if (!File.Exists(readPath)) { return default(T); } XmlSerializer ser = new XmlSerializer(typeof(T)); using (FileStream stream = new FileStream(readPath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite)) { return (T)ser.Deserialize(stream); } } /// <summary> /// 反序列化Binary文件 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="savePath"></param> /// <returns></returns> private static T DeSerializeBinary<T>(string readPath) { BinaryFormatter serilazer = new BinaryFormatter(); using (FileStream stream = new FileStream(readPath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite)) { return (T)serilazer.Deserialize(stream); } } #endregion } }
这个方式比较的就是,直接读取文件的方式。
相关文章推荐
- 再弄一片文章凑个4篇文章的数,主要是用于XML和 Binary序列化和反序列化的类
- 再弄一片文章凑个4篇文章的数,主要是用于XML和 Binary序列化和反序列化的类
- 再弄一片文章凑个4篇文章的数,主要是用于XML和 Binary序列化和反序列化的类
- [Java]一则自定义的XStream转换器,主要用于POJO XML反序列化为Map/List
- JAXB主要用来实现对象和XML之间的序列化和反序列化
- .NET 对象的序列化与反序列化 Binary,Soap,Xml
- .net C# XML / Binary 序列化反序列化代码示例
- Xsd: Xml序列化、反序列化的利器
- C#强化系列文章七:序列化和反序列化
- .net序列化与反序列化包括XML,SOAP,Binary,JSON
- php json与xml序列化/反序列化
- Xml序列化和反序列化对象-使用MemoryStream-实践
- 对象的xml序列化、反序列化
- c# XML和实体类之间相互转换(序列化和反序列化)
- XML和实体类之间相互转换(序列化和反序列化)
- XML序列化与反序列化 整理文档
- C# 序列化(Binary、Xml、Soap)
- c# XML和实体类之间相互转换(序列化和反序列化)
- ajaxfileupload原理及用法,主要用于即想用ajax序列化传递参数,又必须上传文件
- XmlSerializer 对象的Xml序列化和反序列化