ini文件的编码
如何指定编码格式
ini文件一般采用GB2312编码(中文操作系统的ANSI就是GB2312)
ini文件的注释
一般是分号开头
,也可以是#号,或者直接写注释也行
ini文件本身只是一个文本格式的文件,你可以自己定义,只要你真正的数据,如小节名,键名不要使用这些怪字符就可以了
注释一定要单独占一行
C# ini 文件的读写类
using System.IO;
using System.Runtime.InteropServices;
using System.Text;
namespace Common
{
/// <summary>
/// 简单说明以下方法Write()和Read()的参数。
///
/// Read()里的 def 对应API函数的 def参数,它的值由用户指定,是当在配置文件中没有找到具体的 key 时,就用 def的值来代替。
///
/// [section]
/// key=value
/// </summary>
public static class Ini
{
#region API函数声明
[DllImport("kernel32")]
//返回取得字符串缓冲区的长度
private static extern long GetPrivateProfileString(string section, string key,
string def, StringBuilder retVal, int size, string filePath);
[DllImport("kernel32")]
//返回0表示失败,非0为成功
private static extern long WritePrivateProfileString(string section, string key,
string val, string filePath);
#endregion
#region 读Ini文件
public static string Read(string Section, string Key, string def = "", string iniFilePath = "setting")
{
iniFilePath = $@".\ini\{iniFilePath}.ini";
if (File.Exists(iniFilePath))
{
StringBuilder retVal = new StringBuilder(1024);
Ini.GetPrivateProfileString(Section, Key, def, retVal, 1024, iniFilePath);
return retVal.ToString();
}
else
{
return string.Empty;
}
}
#endregion
#region 写Ini文件
public static void Write(string Section, string Key, string Value, string iniFilePath = "setting")
{
iniFilePath = $@".\ini\{iniFilePath}.ini";
if (!File.Exists(iniFilePath))
{
//创建文件
using (FileStream fs = File.Create(iniFilePath))
{
}
}
if (File.Exists(iniFilePath))
{
Ini.WritePrivateProfileString(Section, Key, Value, iniFilePath);
}
}
#endregion
}
}