之前一直把INI文件当做普通文档,通过SYSTEM.IO来读取。最近看了同事做的一个demo的代码,才发现做了好多年小白……于是仔细做了一番研究。
首先,.ini 文件是Initialization File的缩写,即初始化文件,是windows的系统配置文件所采用的存储格式,统管windows的各项配置。INI文件有自己特定的结构,分别是节、键和值。例如,如下一个用于记录串口设备通信参数的配置文件:
[RS232 Config]
;这是一个说明
Port=COM1
其中:
[RS232 Config]为节,Port为键,COM1为值。另外,可通过;添加注释。
如果在C#中希望读取此配置文件中的内容,有两种方式:
第一种--通过Sytem.IO直接进行读取,然后通过关键字进行匹配。这种方式比较笨,是我之前用的方式……
第二种--通过Win32的API来实现。本文中将介绍的也是这种方法。
GetPrivateProfileString()是Win32中的API函数。这两个函数位于kernel32.dll中,使用时需要声明:
[DllImport("kernel32")] private static extern int GetPrivateProfileString (string section , string key , string def , StringBuilder retVal , int size , string filePath ) ;
参数说明:
Section=节名称
key=键值
def=如果键值不存在,默认名称
retValu=读取数值
size = 数值大小
filePath=配置文件路径
以下是读取配置文件的例子
namespace WindowsFormsApplication1 { public partial class Form1 : Form { [DllImport("kernel32")] private static extern int GetPrivateProfileString(string section, string key, string def, System.Text.StringBuilder retVal, int size, string filePath); public Form1() { InitializeComponent(); } private void btRead_Click(object sender, EventArgs e) { string inipath = Application.StartupPath + "\\COM Port Config.INI"; StringBuilder temp = new StringBuilder(500);
GetPrivateProfileString("Prj Info", "COM", "", temp, 500, inipath);
richTextBox1.Text = temp.ToString() + i.ToString (); } } }