cShap ini文件操作带注释
时间: 2023-10-04 17:06:27 浏览: 80
// 引入命名空间
using System.IO;
using System.Collections.Generic;
// 创建一个类来处理INI文件的读写操作
public class INIFile
{
// 定义一个字典来存储INI文件中的键值对
private Dictionary<string, Dictionary<string, string>> iniData;
// 构造函数,初始化INI文件数据
public INIFile()
{
iniData = new Dictionary<string, Dictionary<string, string>>();
}
// 读取INI文件的方法
public void Read(string filePath)
{
// 检查文件是否存在
if (!File.Exists(filePath))
{
throw new FileNotFoundException("INI文件不存在。");
}
// 读取文件内容
string[] lines = File.ReadAllLines(filePath);
// 定义当前节的名称
string currentSection = null;
// 遍历文件内容
foreach (string line in lines)
{
// 去掉行首和行尾的空格
string trimmedLine = line.Trim();
// 判断是否为空行或注释行
if (string.IsNullOrEmpty(trimmedLine) || trimmedLine.StartsWith(";") || trimmedLine.StartsWith("#"))
{
continue;
}
// 判断是否为节名
if (trimmedLine.StartsWith("[") && trimmedLine.EndsWith("]"))
{
// 获取节名
currentSection = trimmedLine.Substring(1, trimmedLine.Length - 2);
// 如果字典中不存在该节,则添加一个新的节
if (!iniData.ContainsKey(currentSection))
{
iniData[currentSection] = new Dictionary<string, string>();
}
}
else
{
// 如果当前节未定义,则抛出异常
if (currentSection == null)
{
throw new InvalidDataException("INI文件格式不正确。");
}
// 分割键值对
string[] keyValue = trimmedLine.Split('=');
// 如果键值对格式不正确,则抛出异常
if (keyValue.Length != 2)
{
throw new InvalidDataException("INI文件格式不正确。");
}
// 获取键和值
string key = keyValue[0].Trim();
string value = keyValue[1].Trim();
// 如果字典中不存在该键,则添加一个新的键值对
if (!iniData[currentSection].ContainsKey(key))
{
iniData[currentSection][key] = value;
}
}
}
}
// 写入INI文件的方法
public void Write(string filePath)
{
// 创建一个字符串列表,用于存储INI文件内容
List<string> lines = new List<string>();
// 遍历字典中的每个节和键值对,将它们写入字符串列表中
foreach (KeyValuePair<string, Dictionary<string, string>> section in iniData)
{
lines.Add("[" + section.Key + "]");
foreach (KeyValuePair<string, string> keyValue in section.Value)
{
lines.Add(keyValue.Key + "=" + keyValue.Value);
}
lines.Add("");
}
// 将字符串列表写入文件
File.WriteAllLines(filePath, lines);
}
// 获取INI文件中指定节和键的值
public string GetValue(string section, string key)
{
// 如果指定的节和键不存在,则返回空字符串
if (!iniData.ContainsKey(section) || !iniData[section].ContainsKey(key))
{
return "";
}
// 返回指定节和键的值
return iniData[section][key];
}
// 设置INI文件中指定节和键的值
public void SetValue(string section, string key, string value)
{
// 如果指定的节不存在,则添加一个新的节
if (!iniData.ContainsKey(section))
{
iniData[section] = new Dictionary<string, string>();
}
// 设置指定键的值
iniData[section][key] = value;
}
}
阅读全文