C#基础学习之操作Ini文件(一)
本文比较基础,也就是抄别人的东西做个总结,INI文件的操作需要用到一些外部函数,以及部分的方法会在下面介绍到,还有就是一些简单的封装。
INI文件操作外部函数引入
INI配置文件采用的·是键值对模式,用Section进行分区,在Section里面存储键值对。
其特点如下:
- 针对INI文件的API操作方法,其中的节点(Section)、键(KEY)都不区分大小写,如果指定的INI文件不存在,会自动创建该文件。
- CharSet定义的时候使用了什么类型,在使用相关方法时必须要使用相应的类型
例如 :GetPrivateProfileSectionNames声明为CharSet.Auto,那么就应该使用 Marshal.PtrToStringAuto来读取相关内容。
如果使用的是CharSet.Ansi,就应该使用Marshal.PtrToStringAnsi来读取内容。
这里我主要用到的引用方法:
/// <summary>
/// 将指定的键和值写到指定的Section,如果已经存在则替换
/// </summary>
/// <param name="lpAppName">节点名称</param>
/// <param name="lpKeyName">键名称。如果为null,则删除指定的节点及其所有的项目</param>
/// <param name="lpString">值内容。如果为null,则删除指定节点中指定的键。</param>
/// <param name="lpFileName">INI文件</param>
/// <returns>操作是否成功</returns>
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool WritePrivateProfileString(string lpAppName, string lpKeyName, string lpString, string lpFileName);
///获取节点信息
[System.Runtime.InteropServices.DllImport("kernel32.dll", CharSet = CharSet.Auto)]
private static extern uint GetPrivateProfileString(string lpAppName, string lpKeyName, string lpDefault, StringBuilder lpReturnedString, uint nSize, string lpFileName);
就这样加载和保存配置文件的函数都引用了一个进来,然后将两个引用的函数进行简单加工一下,保存配置文件的函数
/// 保存配置文件
public static bool SaveConfig(string section, string key, string value)
{
if (string.IsNullOrEmpty(section) || string.IsNullOrEmpty