C#读写INI文件

保存配置的方式有很多种,前面写了xml文件,这篇来介绍下另一种方式:ini文件。

为什么要用ini文件呢,相对xml来说,ini文件的数据结构看起来其实并不占优势,而且现在基本也都是用xml来保存;但是ini文件呢,对于windows系统来说,最起码一看就是明显的配置文件,这给人的感觉就一个字:专业(开玩笑)。其实采用什么文件完全看个人想法。并不是存在着绝对的正确。本篇也只是以技术的角度去介绍。。

ini文件的结构大致如下所示,一个节点下附带多个键值对属性。

读取和写入的话,也完全可以用前面写到的文件流方式,然后用字符串分割或者正则表达式去处理(如果你不嫌麻烦的话),这里我们借用winapi来对ini文件的读写操作。

实现功能:

使用WinApi函数操作ini文件

开发环境:

开发工具: Visual Studio 2013

.NET Framework版本:4.5

实现代码:

//需导入命名空间
using System.Runtime.InteropServices;

/// <summary>
/// 写入ini文件
/// </summary>
/// <param name="node">节点名称</param>
/// <param name="key">键</param>
/// <param name="value">值</param>
/// <param name="filepath">ini路径</param>
/// <returns>0失败/其他成功</returns>
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string node, string key, string value, string filepath);

/// <summary>
/// 
/// </summary>
/// <param name="node">节点名称</param>
/// <param name="key">键</param>
/// <param name="value">值(未读取到数据时设置的默认返回值)</param>
/// <param name="result">读取的结果值</param>
/// <param name="size">读取缓冲区大小</param>
/// <param name="filePath">ini路径</param>
/// <returns>读取到的字节数量</returns>
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string node, string key, string value, StringBuilder result, int size, string filePath);

string iniPath = Application.StartupPath + "\\config.ini";
 private void GetIni()
 {
     //声明接收的数据
     StringBuilder builder = new StringBuilder(1024);
     //调用Winapi函数读取config节点下Name的值
     int len = GetPrivateProfileString("config", "Name", "", builder, 1024, iniPath);
     //输出:张三
     Console.WriteLine(builder.ToString());
 }

 private void WriteIni()
 {
     //调用Winapi函数将Name=张三写入config节点下
     long len = WritePrivateProfileString("config", "Name", "张三", iniPath);
     len = WritePrivateProfileString("config", "Sex", "男", iniPath);

     //调用Winapi函数将Name=李四config2节点下
     len = WritePrivateProfileString("config2", "Name", "李四", iniPath);
     len = WritePrivateProfileString("config2", "Sex", "女", iniPath);
 }

具体的参数我已在函数上标明,对号入座就可以;如果想要覆盖节点值的话,数据整理完成后,直接运行写入的代码就会自动修改

由简入繁,拿来即用

更多精彩,请关注微信公众号:

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值