晨曦飘雪 发表于 2023-10-27 04:32:29

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

定义一个连接配置文件类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;
来源:https://www.cnblogs.com/QZLiang/archive/2023/10/27/17788500.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 序列化与反序列化读取配置文件