zoukankan      html  css  js  c++  java
  • 将对象xml序列化和反序列化

    //将一个对象按XML序列化的方式写入到一个文件,使用的默认的UTF8编码格式

    //o为要序列化的对象

    //path保存文件的路径

    public static object  _lockObj=new object();

    public static void XmlSerializeToFile(object o,string path)

    {

       XmlSerializeToFile(o,path,Encoding.UTF8);

    }

    //encoding 编码方式

    //path 文件路径

    public static void XmlSerializeToFile(object o,string path,Encoding encoding)

    {

      if(string.IsNullOrEmpty(path))

        throw new ArgumentNullException("path");

      Monitor.Enter(_lockObj);//添加排他锁,解决并发写入问题

      try

      {

         using(FileStream file=new FileStream(path,FileMode.Create,FileAccess.Write))

         {

             XmlSerializeInternal(file,o,encoding);

         }

      }

      catch(Exception)

      {

         throw;

      }

      finally

      {

         Monitor.Exit(_lockObj);

      }

    }

    //读入一个文件,并按XML的方式反序列化对象

    public static T XmlDeserializeFromFile<T>(string path,Encoding encoding)

    {

      if(string.IsNullOrEmpty(path))

      throw new ArgumentNullException("path");

      if(encoding == null)

      throw new ArgumentNullException("encoding");

      string xml=File.ReadAllText(path,encoding);

      return XmlDeserialize<T>(xml,encoding);

    }

    pubic static T XmlDeserializeFromFile<T>(string path)

    {

      return XmlDeserializeFromFile<T>(path,Encoding.UTF8);

    }

  • 相关阅读:
    OpenMP
    linux下编写C++程序播放音频
    Canny Edge Detector
    部署服务器
    第五周--论文泛读
    AI研习社“看图猜作者”优秀代码技术总结
    Neural Multimodal Cooperative Learning Toward Micro-Video Understanding学习笔记
    第二次作业:卷积神经网络 part 2
    循环神经网络
    ORB-SLAM学习笔记
  • 原文地址:https://www.cnblogs.com/huodige/p/10654872.html
Copyright © 2011-2022 走看看