C#-操作ini文件格式
INI文件是一种简单的文本文件格式,通常用于存储配置信息。在Windows平台上,这种文件格式曾被广泛用于存储应用程序的配置数据。虽然XML和JSON等更现代的数据存储格式已经变得越来越流行,但在某些场景下,INI文件仍然是一个简单且实用的选择。
在C#中,虽然.NET Framework没有直接提供对INI文件的内置支持,但我们可以使用一些第三方库或者手动解析的方式来读写INI文件。
Ini文件格式
INI文件采用键值对(key-value pairs)的形式组织数据,并将其划分为若干个逻辑段落(sections)
另外,我们可以使用分号(;)定义单行注释。
; 注释行(以分号开始)[Section1] ; 段落名,用方括号包围key1 = value1 ; 键值对,等号分隔键与值key2 = value2[Section2]keyA = valueAkeyB = valueB
操作Ini文件
使用Microsoft.VisualBasic命名空间提供的API尽管名为Visual Basic,但此命名空间中的类库在C#中同样可用。其中包含了对INI文件操作的便捷方法,无需额外引入外部库或编写复杂的P/Invoke代码。
using Microsoft.VisualBasic.FileIO;// 读取INI文件public string ReadIniValue(string section, string key, string filePath){return IniParser.ReadKeyValue(filePath, section, key, "");}// 写入INI文件public void WriteIniValue(string section, string key, string value, string filePath){IniParser.WriteKeyValue(filePath, section, key, value);}// 定义辅助类internal static class IniParser{[DllImport("kernel32")]private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);[DllImport("kernel32")]private static extern int WritePrivateProfileString(string section, string key, string val, string filePath);internal static string ReadKeyValue(string iniPath, string section, string key, string defaultValue){const int MAX_BUFFER = 65535;var sb = new StringBuilder(MAX_BUFFER);GetPrivateProfileString(section, key, defaultValue, sb, MAX_BUFFER, iniPath);return sb.ToString();}internal static void WriteKeyValue(string iniPath, string section, string key, string value){WritePrivateProfileString(section, key, value, iniPath);}}