C# 打开 ini文件,并获取修改后ini的Section key and value

 using System.IO;

static void Main()
{

        string iniFilePath = SelectPath("ini");

        Process.Start(iniFilePath);

        OpenIni(iniFilePath);

}


/// <summary>
/// 打开并获取FilePath
/// </summary>
/// <param name="tempType">文件类型</param>
/// <returns>FilePath</returns>
public static string SelectPath(string tempType)
{
    string filePath = string.Empty;
    if (tempType == "txt")
    {
        OpenFileDialog openFileDialog = new OpenFileDialog()
        {
            Filter = "Files (*.txt)|*.txt"//如果需要筛选csv文件 "Files (*.csv)|*.csv"  "Files (*.txt)|*.txt"
        };
        if (openFileDialog.ShowDialog() == DialogResult.OK)
        {
            filePath = openFileDialog.FileName;
        }
    }
    else if (tempType == "csv")
    {
        OpenFileDialog openFileDialog = new OpenFileDialog()
        {
            Filter = "Files (*.csv)|*.csv"//如果需要筛选csv文件 "Files (*.csv)|*.csv"  "Files (*.txt)|*.txt"
        };
        if (openFileDialog.ShowDialog() == DialogResult.OK)
        {
            filePath = openFileDialog.FileName;
        }
    }
    else if (tempType == "ini")
    {
        OpenFileDialog openFileDialog = new OpenFileDialog()
        {
            Filter = "Files (*.ini)|*.ini"//如果需要筛选csv文件 "Files (*.csv)|*.csv"  "Files (*.txt)|*.txt"
        };
        if (openFileDialog.ShowDialog() == DialogResult.OK)
        {
            filePath = openFileDialog.FileName;
        }
    }
    return filePath;
}


 /// <summary>
/// 获取iniData
/// </summary>
/// <param name="filePath"></param>
/// <returns>iniData</returns> 

public static Dictionary<string, string> OpenIni(string filePath)
{
    // 读取INI文件
    string iniFilePath = filePath;
    Dictionary<string, string> iniData = new Dictionary<string, string>();
    if (File.Exists(iniFilePath))
    {
        using (var reader = new StreamReader(iniFilePath))
        {
            string line;
            string currentSection = string.Empty;

            while ((line = reader.ReadLine()) != null)
            {
                line = line.Trim();

                if (line.StartsWith(";") || line.StartsWith("#"))
                {
                    // 注释行,忽略
                    continue;
                }
                else if (line.StartsWith("[") && line.EndsWith("]"))
                {
                    // 区段行
                    currentSection = line.Substring(1, line.Length - 2);
                }
                else if (!string.IsNullOrEmpty(line) && line.Contains("="))
                {
                    // 键值行
                    string[] parts = line.Split(new char[] { '=' }, 2, StringSplitOptions.RemoveEmptyEntries);

                    if (parts.Length == 2)
                    {
                        string key = parts[0].Trim();
                        string value = parts[1].Trim();

                        int index = value.IndexOf(';');
                        if (index != -1)
                            value = value.Substring(0, index);
                        else
                            Console.WriteLine("ini format error");
                        value = value.Replace(" ", "");// 删除空格

                        string sectionKey = currentSection + "|" + key;

                        if (!iniData.ContainsKey(sectionKey))
                        {
                            iniData.Add(sectionKey, value);
                        }
                        else
                        {
                            // 如果有重复的键名称,则覆盖现有的值
                            iniData[sectionKey] = value;
                        }
                    }
                }
            }
        }
    }
    
    return iniData;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhanfawu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值