C# 读取配置文件新的

时间:2021-05-22 23:48:58

之前一直把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 (); } } }