.ini文件 初始化文件
- windows配置文件,由【节,键值对】组成 【节】需要由[]包裹,节后可以跟多个键值对,表示这些键值对属于这个节,多个节相互独立。
- 注释由[;]分号起始,到行尾结束。
问题:
1.中文乱码:读取和写入时需要设置编码格式 UTF-8
2.使用系统编辑过ini文件后读取数据失败,使用系统编辑文本后,会生成utf-8 BOM格式,解决办法,一用其他编辑器重新编辑。二ini文件的第一行空出来
//声明读写INI文件的API函数
[DllImport("kernel32")]
public static extern bool WritePrivateProfileString(string section, string key, string val, string filePath);
[DllImport("kernel32")]
public static extern int GetPrivateProfileString(string section, string key, string def, byte[] retVal, int size, string filePath);
/// <summary>
/// 读取ini文件
/// </summary>
/// <param name="filePath">文件路径</param>
/// <param name="Section">节 名称</param>
/// <param name="Ident">key值</param>
/// <param name="Default">读取失败返回值</param>
/// <returns></returns>
public static string ReadIniString(string filePath, string Section, string Ident, string Default)
{
Byte[] Buffer = new Byte[65535];
int bufLen = GetPrivateProfileString(Section, Ident, Default, Buffer, Buffer.GetUpperBound(0), filePath);
//必须设定0(系统默认的代码页)的编码方式,否则无法支持中文
string s = Encoding.UTF8.GetString(Buffer, 0, bufLen);
return s.Trim();
}
/// <summary>
/// 写入ini文件
/// </summary>
/// <param name="filePath">文件路径</param>
/// <param name="Section">节 名称</param>
/// <param name="Ident">key值</param>
/// <param name="Value">value写入值</param>
/// <returns></returns>
public static bool WriteIniString(string filePath, string Section, string Ident, string Value)
{
bool bResult = WritePrivateProfileString(Section, Ident, Value, filePath);
return bResult;
}