c# 读写ini文件
//在 Ini 文件中写数据
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
//读取 Ini 文件中的数据
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
//读取所有Sections
[DllImport("kernel32", EntryPoint = "GetPrivateProfileString")]
private static extern uint GetPrivateProfileStringA(string section, string key, string def, Byte[] retVal, int size, string filePath);
/// <summary>
/// 创建Ini文件,并写入数据
/// </summary>
/// <param name="section">根节点</param>
/// <param name="key">键</param>
/// <param name="val">值</param>
/// <param name="filePath">路径</param>
public static void WriteIniData(string section, string key, string val, string filePath)
{
if (!File.Exists(filePath))
{
var fs = File.Create(filePath);
fs.Dispose();
fs.Close();
}
WritePrivateProfileString(section, key, val, filePath);
}
/// <summary>
/// 读取 Ini 文件
/// </summary>
/// <param name="section">根节点</param>
/// <param name="key">键</param>
/// <param name="def">默认数据</param>
/// <param name="retVal">返回数据</param>
/// <param name="size">大小</param>
/// <param name="filePath">路径</param>
public static void ReadIniData(string section, string key, string def, StringBuilder retVal, int size, string filePath)
{
GetPrivateProfileString(section, key, def, retVal, size, filePath);
}
public static List<string> ReadAllSection(string filePath)
{
List<string> result = new List<string>();
Byte[] buf = new Byte[65536];
uint len = GetPrivateProfileStringA(null, null, null, buf, buf.Length, filePath);
int j = 0;
for (int i = 0; i < len; i++)
{
if (buf[i] == 0)
{
result.Add(Encoding.Default.GetString(buf, j, i - j));
j = i + 1;
}
}
return result;
}