C# Ini文件操作实例


在C#中操作INI文件,你可以使用`System.IO`命名空间下的类来读写文件内容,但处理INI文件的解析和格式化通常需要自定义一些逻辑,因为.NET标准库中没有直接支持INI文件的类。下面是一个简单的C#示例,展示如何读取和写入INI文件。

### 读取INI文件

首先,我们需要一个方法来读取INI文件并解析其内容。这里,我们使用`Dictionary>`来存储INI文件的数据,其中外层字典的键是节(section)名,内层字典的键是键(key),值是对应的值(value)。


using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;

public class IniFile
{
    private Dictionary<string, Dictionary<string, string>> data = new Dictionary<string, Dictionary<string, string>>();

    public void Read(string filePath)
    {
        data.Clear();

        if (!File.Exists(filePath))
            throw new FileNotFoundException("INI file not found.", filePath);

        string[] lines = File.ReadAllLines(filePath);
        string currentSection = null;

        foreach (string line in lines)
        {
            if (string.IsNullOrWhiteSpace(line))
                continue;

            if (line.StartsWith(";") || line.StartsWith("#")) // 忽略注释
                continue;

            if (line.StartsWith("[") && line.EndsWith("]"))
            {
                currentSection = line.Trim('[', ']');
                if (!data.ContainsKey(currentSection))
                    data[currentSection] = new Dictionary<string, string>();
            }
            else
            {
                string[] parts = line.Split(new[] { '=' }, 2, StringSplitOptions.None);
                if (parts.Length == 2)
                {
                    string key = parts[0].Trim();
                    string value = parts[1].Trim();
                    if (currentSection != null && data.ContainsKey(currentSection))
                        data[currentSection][key] = value;
                }
            }
        }
    }

    // 示例方法,用于获取某个节下的某个键的值
    public string GetValue(string section, string key)
    {
        if (data.TryGetValue(section, out Dictionary<string, string> sectionData) &&
            sectionData.TryGetValue(key, out string value))
        {
            return value;
        }
        return null;
    }

    // 可以在这里添加更多方法来操作INI文件,如写入、修改等
}

// 使用示例
class Program
{
    static void Main(string[] args)
    {
        IniFile iniFile = new IniFile();
        iniFile.Read("example.ini");
        string value = iniFile.GetValue("Settings", "FontSize");
        Console.WriteLine($"Font Size: {value}");
    }
}

### 写入INI文件

写入INI文件时,你可以根据`data`字典中的内容来构建字符串,并将其写入文件。这里不提供完整的写入示例,但基本的思路是遍历字典,按照INI文件的格式构建字符串,并使用`File.WriteAllText`方法写入文件。

注意:上面的示例代码主要关注于INI文件的读取和简单查询,并未涵盖写入操作的完整实现。在实际应用中,你可能需要根据具体需求对INI文件的读写操作进行更详细的实现和错误处理。