判断文件是否存在 不存在则创建默认文件 并写入默认值
/// <summary>
/// 判断文件是否存在 不存在则创建默认文件 并写入默认值
/// </summary>
public void IsConfigFileExist()
{
try
{
// 获取应用程序的当前工作目录。
string fileName = System.IO.Directory.GetCurrentDirectory();
string path = fileName + "\\Config";
if (!Directory.Exists(path)) //此文件夹是否存在
{
Directory.CreateDirectory(path); //创建文件夹
}
//创建IP文件夹
string path1 = path + "\\SerialPortConfig.ini";
System.IO.FileInfo fi = new System.IO.FileInfo(path1);
if (!File.Exists(path1)) //判断IPAdderss.txt是否存在
{
//不存在文件,则创建IPAdderss.txt文件
FileStream fs = new FileStream(path1, FileMode.Create, FileAccess.Write);
fs.Close();
//打开文件
StreamWriter sw = new StreamWriter(path1);
//定义一个键值对集合
Dictionary<string, string> dictionary = new Dictionary<string, string>();
//添加键值对数据,键必须唯一,值可重复
dictionary.Add("参数解释", "R1:继电器1打开;R11:继电器1关闭;");
dictionary.Add("R1", "01 05 00 20 FF 00 8D F0");
dictionary.Add("R11", "01 05 00 20 00 00 CC 00");
dictionary.Add("R2", "01 05 00 21 FF 00 DC 30");
dictionary.Add("R21", "01 05 00 21 00 00 9D C0");
dictionary.Add("R3", "01 05 00 22 FF 00 2C 30");
dictionary.Add("R31", "01 05 00 22 00 00 6D C0");
dictionary.Add("R4", "01 05 00 23 FF 00 7D F0");
dictionary.Add("R41", "01 05 00 23 00 00 3C 00");
dictionary.Add("R5", "01 05 00 24 FF 00 CC 31");
dictionary.Add("R51", "01 05 00 24 00 00 8D C1");
dictionary.Add("R6", "01 05 00 25 FF 00 9D F1");
dictionary.Add("R61", "01 05 00 25 00 00 DC 01");
dictionary.Add("R7", "01 05 00 26 FF 00 6D F1");
dictionary.Add("R71", "01 05 00 26 00 00 2C 01");
dictionary.Add("R8", "01 05 00 27 FF 00 3C 31");
dictionary.Add("R81", "01 05 00 27 00 00 7D C1");
//通过键值对遍历集合
foreach (KeyValuePair<string, string> kv in dictionary)
{
//向文件中写入参数
sw.WriteLine(kv.Key + "=" + kv.Value);
}
//向文件中写入参数
//关闭文件
sw.Close();
}
//创建用户文件夹,存储用户名和密码
path1 = path + "\\User.ini";
fi = new System.IO.FileInfo(path1);
if (!File.Exists(path1)) //判断IPAdderss.txt是否存在
{
//不存在文件,则创建IPAdderss.txt文件
FileStream fs = new FileStream(path1, FileMode.Create, FileAccess.Write);
fs.Close();
//打开文件
StreamWriter sw = new StreamWriter(path1);
//定义一个键值对集合
Dictionary<string, string> dictionary = new Dictionary<string, string>();
//添加键值对数据,键必须唯一,值可重复
dictionary.Add("操作员", "123456");
dictionary.Add("管理员", "admin");
//通过键值对遍历集合
foreach (KeyValuePair<string, string> kv in dictionary)
{
//向文件中写入参数
sw.WriteLine(kv.Key + "=" + kv.Value);
}
//向文件中写入参数
//关闭文件
sw.Close();
}
}
catch (Exception ex)
{
MessageBox.Show("异常:" + ex.Message);
}
}
执行效果:创建文件并写入默认值(以键值对形式)

通过键和文件名读取文件中的值
/// <summary>
/// 读取文件
/// </summary>
/// <param name="keyName">键名</param>
/// <param name="FileName">文件名</param>
/// <returns></returns>
public string ReadConfigFile(string keyName, string FileName)
{
// 获取应用程序的当前工作目录。
string fileName = System.IO.Directory.GetCurrentDirectory();
string path = fileName + "\\Config";
string filePath = path + "\\" + FileName;
string returnValue = "";
if (!Directory.Exists(path)) //此文件夹是否存在
{
IsConfigFileExist();
}
Dictionary<string, string> keyValuePairs = new Dictionary<string, string>();
using (StreamReader reader = new StreamReader(filePath))
{
string line;
while ((line = reader.ReadLine()) != null)
{
string[] parts = line.Split('=');
if (parts.Length == 2)
{
keyValuePairs[parts[0].Trim()] = parts[1].Trim();
}
}
}
foreach (var kvp in keyValuePairs)
{
//Console.WriteLine($"Key: {kvp.Key}, Value: {kvp.Value}");
if (kvp.Key == keyName)
{
return kvp.Value;
}
}
return returnValue;
}
执行效果:读取键名为R1的值


通过键修改文件中的值
/// <summary>
/// 修改文件
/// </summary>
/// <param name="modifyKeyName">键名</param>
/// <param name="modifyKeyValue">键值</param>
/// <param name="modifyFileName">文件名</param>
/// <returns></returns>
public bool UpdateConfigFile(string modifyKeyName, string modifyKeyValue, string modifyFileName)
{
try
{
// 获取应用程序的当前工作目录。
string fileName = System.IO.Directory.GetCurrentDirectory();
string path = fileName + "\\Config\\" + modifyFileName;
string keyToUpdate = modifyKeyName;
string newValue = modifyKeyValue;
// 读取文件内容到字符串数组
string[] lines = File.ReadAllLines(path);
string updatedContent = "";
bool keyFound = false;
foreach (var line in lines)
{
if (line.StartsWith(keyToUpdate + "="))
{
// 找到键,修改值
updatedContent += $"{keyToUpdate}={newValue}\n";
keyFound = true;
}
else
{
// 未找到键,直接添加原行
updatedContent += line + "\n";
}
}
if (!keyFound)
{
// 如果键不存在,添加新的键值对
updatedContent += $"{keyToUpdate}={newValue}\n";
}
// 写入修改后的内容到文件
File.WriteAllText(path, updatedContent);
}
catch (Exception ex)
{
MessageBox.Show("异常:" + ex.Message);
return false;
}
return true;
}
执行效果:修改键为R1的值为123

