C#使用API读写ini配置文件详解
C#原生库不直接提供对.ini文件的完整读写支持,但可以通过引入Windows系统底层的kernel32.dll API轻松实现。本文将展示如何封装读写函数,并在WinForm窗体中完成对配置节点、属性及值的写入与查询操作。
实践环境准备
开发基于WinForm框架的.NET应用程序。在代码文件中需引入 System.Runtime.InteropServices 以支持DllImport功能。 ini文件通常位于程序运行目录的子文件夹下,本例中演示了从启动路径向上回溯两级的逻辑。
核心步骤详解
第1步:编写INI写入模块
目的:将指定的节(Section)、键(Key)及其值写入本地ini文件。
入口:项目源代码主逻辑类或公共静态工具类。
动作:
- 声明外部函数接口,映射到
kernel32中的WritePrivateProfileString。 - 封装公共方法
IniWriteValue,接收段名、键名、新值和文件路径。 - 调用平台调用服务执行写入。
参数说明:
- section:配置文件的分组名称(如[Database])。
- key:具体的配置项名称(如ServerIP)。
- value:要保存的数据字符串。
重要参数与完整代码:
using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
// 引入Kernel32 API用于写入
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
public static void IniWriteValue(string section, string key, string value, string path)
{
WritePrivateProfileString(section, key, value, path);
}
// 定义ini文件存放路径变量
string strg;
private void Form1_Load(object sender, EventArgs e)
{
// 获取当前程序运行路径并定位到上一级目录的Test.ini文件
strg = Application.StartupPath.ToString();
strg = strg.Substring(0, strg.LastIndexOf("\\"));
strg = strg.Substring(0, strg.LastIndexOf("\\"));
strg += @"\Test.ini";
}
private void button2_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void button1_Click(object sender, EventArgs e)
{
// 校验输入框非空后执行写入
if (textBox1.Text != "" && textBox2.Text != "" && textBox3.Text != "")
{
IniWriteValue(textBox1.Text.Trim(), textBox2.Text.Trim(), textBox3.Text.Trim(), strg);
MessageBox.Show("写入成功");
}
}
}
第2步:编写INI读取模块
目的:根据给定的section和key从ini文件中提取对应的value值。
入口:同上项目类文件中。
动作:
- 声明外部函数接口,映射到
kernel32中的GetPrivateProfileString。 - 创建
SbtringBuilder对象作为缓冲器接收返回结果。 - 调用API并将缓冲区内容转换为字符串返回。
关键参数与完整代码:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
string strg;
// 引入Kernel32 API用于读取,注意返回值类型与参数类型不同
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retval, int size, string filePath);
public static string IniReadValue(string section, string key, string path)
{
// 初始化容量为255的StringBuilder作为接收缓冲区
StringBuilder temp = new StringBuilder(255);
// 调用API,若未找到则返回默认值 ""
int i = GetPrivateProfileString(section, key, "", temp, 255, path);
return temp.ToString();
}
private void Form1_Load(object sender, EventArgs e)
{
strg = Application.StartupPath.ToString();
strg = strg.Substring(0, strg.LastIndexOf("\\"));
strg = strg.Substring(0, strg.LastIndexOf("\\"));
strg += @"\Test.ini";
}
private void button2_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void button1_Click(object sender, EventArgs e)
{
// 点击读取按钮,将查询到的值填入界面显示
textBox3.Text = IniReadValue(textBox1.Text.Trim(), textBox2.Text.Trim(), strg);
}
}
完成判断
成功编译并运行程序后:
- 在“节点”输入框填写段落名(例如Network)。
- 在“属性”输入框填写字段名(例如IP)。
- 在“属性值”输入框填写数据(例如192.168.1.1),点击“写入”会提示成功,且本地
Test.ini产生对应记录。 - 重新打开应用或继续操作,选中已存在的节点和属性,点击“读取”,对应的“属性值”文本框将自动填充原有数据。
简要总结
上述是C#实现读写ini配置文件的方法详细内容,更多关于C#读写ini配置文件的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









