翼度科技»论坛 编程开发 .net 查看内容

序列化与反序列化读取配置文件

5

主题

5

帖子

15

积分

新手上路

Rank: 1

积分
15
定义一个连接配置文件类OmCipNetParam
  1. public class OmCipNetParam{
  2.     //设备ip地址
  3.     public string PlcIp;
  4.     //设备端口号
  5.     public int PlcPort;
  6.     //设备槽号
  7.     public byte slot;
  8.     //本地IP地址
  9.     public string LocalIp;
  10.   /// <summary>
  11.   /// 构造函数
  12.   /// </summary>
  13.   public OmCipNetParam()
  14.   {
  15.       PLcIP = "192.168.250.1";
  16.       PLcProt = 44818;
  17.       PLcSolt = 0;
  18.       LocalIp = "127.0.0.1";
  19.   }
  20.    
  21. }
复制代码
定义一个结构体,传递函数运行结果和运行信息

  1. public struct Error
  2. {
  3.      public bool Flag;
  4.      public string Info;
  5. }       
复制代码
使用Newtonsoft.Json进行序列化和反序列化读写配置文件

  1. public static Error Write(string path, OmCipNetParam param)
  2. {
  3.      Error er = default(Error);
  4.      FileInfo fi = new FileInfo(path);
  5.      //文件是否存在标志
  6.      bool flag = false;
  7.      //对象是否为空标志
  8.      bool flag2 = false;
  9.      try
  10.      {
  11.          flag2 = param == null;
  12.          if (flag2)
  13.          {
  14.              param = new OmCipNetParam();
  15.          }
  16.          flag = !fi.Directory.Exists;
  17.          if (flag)
  18.          {
  19.              fi.Create();
  20.          }
  21.          StreamWriter writer = new StreamWriter(path);
  22.          // 执行序列化
  23.          string json = JsonConvert.SerializeObject(param);
  24.          //写入文件
  25.          writer.WriteLine(json);
  26.          writer.Close();
  27.          er.Flag = true;
  28.          er.Info = "保存完成";
  29.      }
  30.      catch (Exception ex)
  31.      {
  32.          er.Flag = false;
  33.          er.Info = string.Format("错误信息:{0}", ex.Message);
  34.      }
  35.      return er;
  36. }
复制代码
同理反序列读取配置文件
  1. public static Error Reade(string path,out OmCipNetParam param)
  2. {
  3.      param = new OmCipNetParam();
  4.      Error er = default(Error);
  5.      try
  6.      {
  7.          FileInfo fi = new FileInfo(path);
  8.          //文件目录是否存在标志
  9.          bool flag = !fi.Directory.Exists;
  10.          if (flag)
  11.          {
  12.              fi.Create();
  13.             
  14.          }
  15.          //文件是否存在标志
  16.          bool flag2 = fi.Exists;
  17.          //如果存在
  18.          if(flag2){
  19.              //文件读取
  20.              //  string json = File.ReadAllText(path);
  21.              StreamReader reader = new StreamReader(path);
  22.              string json = reader.ReadLine();
  23.              //反序列
  24.              param = JsonConvert.DeserializeObject<OmCipNetParam>(json);
  25.              reader.Close();
  26.              er.Flag = true;
  27.              er.Info = "读取成功!";
  28.          }
  29.          else
  30.          {
  31.              StreamWriter writer = new StreamWriter(path);
  32.              // 执行序列化
  33.              string json = JsonConvert.SerializeObject(param);
  34.              //写入文件
  35.              writer.WriteLine(json);
  36.              writer.Close();
  37.              er.Flag = true;
  38.              er.Info = "文件不存在,已经创建,请配置";
  39.          }
  40.       
  41.      }
  42.      catch (Exception ex)
  43.      {
  44.          er.Flag = false;
  45.          er.Info = string.Format("错误信息:{0}", ex.Message);
  46.      }
  47.      return er;
  48. }
复制代码
注意这里需要引入库
  1. using System.IO;
  2. using Newtonsoft.Json;
复制代码
来源:https://www.cnblogs.com/QZLiang/archive/2023/10/27/17788500.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
来自手机

举报 回复 使用道具