FAQ001 读取INI文件的配置项

发布时间 2024-01-08 09:43:30作者: 卡巴一枝花

要读取 INI 文件中的配置项,你可以使用 System.IO.File 类来读取文件,然后使用 System.Text.RegularExpressions.Regex 类来搜索字符串并提取所需的值。下面是一个基本的函数示例,它根据传入的文件名和配置项名返回对应的配置值。

using System.IO;
using System.Text.RegularExpressions;

public static string GetIniValue(string fileName, string sectionName, string keyName)
{
    string value = null;
    string pattern = string.Format(@"\[(?<section>[^\]]+)\][\n\r\s]*((?<comment>;.*)|(?<key>[^=^;\n]+)=(?<value>[^\n^;]*))", sectionName);

    if (File.Exists(fileName))
    {
        string fileContent = File.ReadAllText(fileName);

        MatchCollection matches = Regex.Matches(fileContent, pattern, RegexOptions.IgnoreCase | RegexOptions.Multiline);

        foreach (Match match in matches)
        {
            string section = match.Groups["section"].Value;

            if (string.Compare(section, sectionName, StringComparison.OrdinalIgnoreCase) == 0)
            {
                string key = match.Groups["key"].Value.Trim();

                if (string.Compare(key, keyName, StringComparison.OrdinalIgnoreCase) == 0)
                {
                    value = match.Groups["value"].Value.Trim();
                    break;
                }
            }
        }
    }

    return value;
}

这个函数实现了以下功能:

  1. 读取指定的 INI 文件;
  2. 通过正则表达式搜索文件内容、匹配指定的节和键,并返回匹配到的值。

使用方法:

string fileName = "C:\\example.ini";
string sectionName = "Section1";
string keyName = "Key1";
string value = GetIniValue(fileName, sectionName, keyName);

在上面的代码中,你需要将 fileName 设置为要读取的 INI 文件的完整路径,sectionName 设置为需要查找的节名称,keyName 设置为需要查找的键名称。然后可以使用返回的 value 变量获得相应的配置值。

需要注意的是,这个函数是一个基本示例,仅适用于具有类似于标准 INI 文件格式的文件。如果你遇到的是特定格式的 INI 文件,可能需要更改函数中的正则表达式以适应你的需要。