序列化与反序列化读取配置文件
定义一个连接配置文件类OmCipNetParampublic 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]