首先了解什么是ini文件 什么是ini
了解ini文件的格式:
[section]
key=value
以上为一个ini文件的基本格式,section 是段落名,key是键名,value为键所对应的值。英文分号后面所有内容为注释内容,例如
;这是一条注释
[Company]
CompanyName=x
CompanyAddress=zhongguo
以上为本次讲解使用的一个简单ini文件。
创建一个ini文件的操作类,
public static class IniFunc
{
/// <summary>
/// 获取值
/// </summary>
/// <param name="section">段落名</param>
/// <param name="key">键名</param>
/// <param name="defval">读取异常是的缺省值</param>
/// <param name="retval">键名所对应的的值,没有找到返回空值</param>
/// <param name="size">返回值允许的大小</param>
/// <param name="filepath">ini文件的完整路径</param>
/// <returns></returns>
[DllImport("kernel32.dll")]
private static extern int GetPrivateProfileString(
string section,
string key,
string defval,
StringBuilder retval,
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="section">段落名</param>
/// <param name="key">键名</param>
/// <param name="def">没有找到时返回的默认值</param>
/// <param name="filename">ini文件完整路径</param>
/// <returns></returns>
public static string getString(string section, string key, string def, string filename)
{
StringBuilder sb = new StringBuilder(1024);
GetPrivateProfileString(section, key, def, sb, 1024, filename);
return sb.ToString();
}
/// <summary>
/// 写入数据
/// </summary>
/// <param name="section">段落名</param>
/// <param name="key">键名</param>
/// <param name="val">写入值</param>
/// <param name="filename">ini文件完整路径</param>
public static void writeString(string section, string key, string val, string filename)
{
WritePrivateProfileString(section, key, val, filename);
}
}
注释已经写得足够明白,不做过多解释。
调用方法
string filename = @"D:\Program Files\y\test\ConsoleApplication1\Config.ini";
string name = IniFunc.getString("Company", "CompanyName", "", filename);
Console.WriteLine("公司名称:{0}", name);
Console.WriteLine("现在修改公司名称!");
string company = Console.ReadLine();
IniFunc.writeString("Company", "CompanyName", company, filename);
name = IniFunc.getString("Company", "CompanyName", "", filename);
Console.WriteLine("公司名称:{0}", name);
Console.Read();
几个注意事项:
- ini文件的路径必须使用绝对路径。
- ini文件首行留空,否则无法获取到值,原因未知。