工作中一直比较少用ini配置文件,就算用到也基本手撸代码来处理,最近在一个小项目中使用的是因时间紧急又一下找不到以前手撸的代码放哪了,就上网找了一下发现原来windows自带的kernel32库中就已打包ini配置文件的操作,简单易用。
比如我们手上有一个ini文件内容如下:
[zhangsan]
country=china
age=100
[peter]
country=JPA
age=50
我们对ini操作的工具类代码如下
public class iniUtil
{
private const int VALUE_MAX_LEN = 1024;
/// <summary>
/// 获取值
/// </summary>
/// <param name="section">段落名</param>
/// <param name="keyName">键名</param>
/// <param name="defaultValue">读取异常是的缺省值</param>
/// <param name="returnValue">键名所对应的的值,没有找到返回空值</param>
/// <param name="size">返回值允许的大小</param>
/// <param name="filepath">ini文件的完整路径</param>
/// <returns></returns>
[DllImport("kernel32.dll")]
private static extern int GetPrivateProfileString(
string section,
string keyName,
string defaultValue,
StringBuilder returnValue,
int size,
string filepath);
/// <summary>
/// 写入
/// </summary>
/// <param name="section">需要写入的段落名</param>
/// <param name="key">需要写入的键名</param>
/// <param name="val">写入值</param>
/// <param name="filepath">ini文件的完整路径</param>
/// <returns></returns>
[DllImport("kernel32.dll")]
private static extern int WritePrivateProfileString(
string section,
string key,
string val,
string filepath);
/// <summary>
/// 外部函数:读配置
/// </summary>
/// <param name="filename">文件名</param>
/// <param name="section">段落名</param>
/// <param name="keyName">键名</param>
/// <param name="defaultValue">默认值</param>
/// <returns></returns>
public static string ReadProfileValue(string filename, string section, string keyName, string defaultValue)
{
StringBuilder returnValue = new StringBuilder(VALUE_MAX_LEN + 1);
GetPrivateProfileString(section, keyName, defaultValue, returnValue, VALUE_MAX_LEN, filename);
return returnValue.ToString();
}
/// <summary>
/// 外部函数:写配置
/// </summary>
/// <param name="filename">文件名</param>
/// <param name="section">段落名</param>
/// <param name="keyName">键名</param>
/// <param name="defaultValue">默认值</param>
/// <returns></returns>
public static bool WriteProfileValue(string filename, string section, string keyName, string keyValue)
{
return (0 != WritePrivateProfileString(section, keyName, keyValue, filename));
}
}
比如我们读上方实例ini文件中zhangsan段落的country内容代码如下:
iniUtil util = new iniUtil();
var country = util.ReadProfileValue(@"C:\Test\test.ini", //文件路径
"zhangsan", //对应ini文件的[zhangsan]
"country", //对应[zhangsan]下的country
"CHN"); //如果文件中没有该项的时候返回的默认值
我们现在写入一个叫 SysEnv 段落并配置IP和Port的内容代码如下:
iniUtil util = new iniUtil();
util.WriteProfileValue(@"C:\Test\test.ini",
"SysEnv ",
"IP",
"127.0.0.1");
util.WriteProfileValue(@"C:\Test\test.ini",
"SysEnv ",
"Port",
"10086");
这简单的工具类代码如下,使用的再根据自身情况把它做成Static方法或做成全局变量
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异