在 C# 中,你可以使用 System.IO
命名空间中的类来读取 INI 文件。下面是一个简单的例子,演示了如何读取 INI 文件的键值对:
using System;
using System.Collections.Generic;
using System.IO;
class IniParser
{
private readonly Dictionary<string, Dictionary<string, string>> sections = new Dictionary<string, Dictionary<string, string>>(StringComparer.OrdinalIgnoreCase);
public IniParser(string filePath)
{
Load(filePath);
}
public string GetValue(string section, string key)
{
if (sections.TryGetValue(section, out var keys))
{
if (keys.TryGetValue(key, out var value))
{
return value;
}
}
return null;
}
private void Load(string filePath)
{
if (!File.Exists(filePath))
{
throw new FileNotFoundException($"INI file not found: {filePath}");
}
string currentSection = string.Empty;
foreach (var line in File.ReadAllLines(filePath))
{
string trimmedLine = line.Trim();
if (string.IsNullOrWhiteSpace(trimmedLine) || trimmedLine.StartsWith(";") || trimmedLine.StartsWith("#"))
{
// Ignore empty lines and comments
continue;
}
if (trimmedLine.StartsWith("[") && trimmedLine.EndsWith("]"))
{
// Section header
currentSection = trimmedLine.Substring(1, trimmedLine.Length - 2);
sections[currentSection] = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
}
else
{
// Key-value pair
string[] keyValue = trimmedLine.Split('=');
if (keyValue.Length == 2)
{
string key = keyValue[0].Trim();
string value = keyValue[1].Trim();
if (!string.IsNullOrEmpty(currentSection))
{
sections[currentSection][key] = value;
}
}
}
}
}
}
class Program
{
static void Main()
{
string filePath = "your_ini_file.ini";
IniParser iniParser = new IniParser(filePath);
// Example: Read a value from a specific section and key
string value = iniParser.GetValue("SectionName", "KeyName");
Console.WriteLine($"Value: {value}");
}
}