- A+
所属分类:.NET技术
定义一个连接配置文件类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;