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

发布时间 2023-10-27 00:31:48作者: 瞬间moment

定义一个连接配置文件类OmCipNetParam

public class OmCipNetParam{
    //设备ip地址
    public string PlcIp;
    //设备端口号
    public int PlcPort;
    //设备槽号
    public byte slot;
    //本地IP地址
    public string LocalIp;
  /// <summary>
  /// 构造函数
  /// </summary>
  public OmCipNetParam()
  {
      PLcIP = "192.168.250.1";
      PLcProt = 44818;
      PLcSolt = 0;
      LocalIp = "127.0.0.1";
  }
    
}

定义一个结构体,传递函数运行结果和运行信息

 public struct Error
 {
     public bool Flag;
     public string Info;
 }	

使用Newtonsoft.Json进行序列化和反序列化读写配置文件

 public static Error Write(string path, OmCipNetParam param)
 {
     Error er = default(Error);
     FileInfo fi = new FileInfo(path);
     //文件是否存在标志
     bool flag = false;
     //对象是否为空标志
     bool flag2 = false;
     try
     {
         flag2 = param == null;
         if (flag2)
         {
             param = new OmCipNetParam();
         }
         flag = !fi.Directory.Exists;
         if (flag)
         {
             fi.Create();
         }
         StreamWriter writer = new StreamWriter(path);
         // 执行序列化
         string json = JsonConvert.SerializeObject(param);
         //写入文件
         writer.WriteLine(json);
         writer.Close();
         er.Flag = true;
         er.Info = "保存完成";

     }
     catch (Exception ex)
     {
         er.Flag = false;
         er.Info = string.Format("错误信息:{0}", ex.Message);
     }
     return er;

 }

同理反序列读取配置文件

 public static Error Reade(string path,out OmCipNetParam param)
 {
     param = new OmCipNetParam();
     Error er = default(Error);

     try
     {

         FileInfo fi = new FileInfo(path);
         //文件目录是否存在标志
         bool flag = !fi.Directory.Exists;
         if (flag)
         {
             fi.Create();
             
         }
         //文件是否存在标志
         bool flag2 = fi.Exists;
         //如果存在
         if(flag2){
             //文件读取
             //  string json = File.ReadAllText(path);
             StreamReader reader = new StreamReader(path);
             string json = reader.ReadLine();

             //反序列
             param = JsonConvert.DeserializeObject<OmCipNetParam>(json);
             reader.Close();
             er.Flag = true;
             er.Info = "读取成功!";
         }
         else
         {
             StreamWriter writer = new StreamWriter(path);
             // 执行序列化
             string json = JsonConvert.SerializeObject(param);
             //写入文件
             writer.WriteLine(json);
             writer.Close();
             er.Flag = true;
             er.Info = "文件不存在,已经创建,请配置";
         }
       
     }
     catch (Exception ex)
     {
         er.Flag = false;
         er.Info = string.Format("错误信息:{0}", ex.Message);

     }

     return er;
 }

注意这里需要引入库

using System.IO;
using Newtonsoft.Json;