首先引入API函数
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(
string lpAppName,
string lpKeyName,
string lpDefault,
StringBuilder lpReturnedString,
int nSize,
string lpFileName);
/// <summary>
/// 读取ini文件中的值
/// </summary>
/// <param name="Section">ini文件中的session</param>
/// <param name="key">ini文件中的键名</param>
/// <param name="sPath">ini文件中的路径</param>
/// <returns></returns>
public string ReadContentValue(string Section, string key, string sPath)
{
StringBuilder temp = new StringBuilder(8192);
try { GetPrivateProfileString(Section, key, "", temp, 8192, sPath); } catch (Exception e) { MessageBox.Show(e.Message); }
return temp.ToString();
}
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(
string mpAppName,
string mpKeyName,
string mpDefault,
string mpFileName);
[DllImport("kernel32", EntryPoint = "GetPrivateProfileString")]
private static extern uint GetPrivateProfileStringA(string section, string key,
string def, Byte[] retVal, int size, string filePath);
读取ini文件中所有的Session以及key的方法
/// <summary>
/// 读取ini文件中所有的键Key
/// </summary>
/// <param name="SectionName">Session</param>
/// <param name="iniFilename">ini文件路径</param>
/// <returns></returns>
public static List<string> ReadKeys(string SectionName, string iniFilename)
{
List<string> result = new List<string>();
Byte[] buf = new Byte[65536];
uint len = GetPrivateProfileStringA(SectionName, null, null, buf, buf.Length, iniFilename);
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;
}
/// <summary>
/// 读取ini文件中所有session
/// </summary>
/// <param name="iniFilename">ini文件路径</param>
/// <returns></returns>
public static List<string> ReadSessions(string iniFilename)
{
List<string> result = new List<string>();
Byte[] buf = new Byte[65536];
uint len = GetPrivateProfileStringA(null, null, null, buf, buf.Length, iniFilename);
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;
}
调用
/*
[Session]
key1=value1
key2=value2
*/
//str=Application.StartupPath + "\\1.ini"
//将Session 下的key1的值value1修改为value11
WritePrivateProfileString("Session", "key1", "value11", str);
//读取Session下的key2的值
ReadContentValue("Session", "key2", str);//value2
//读取ini文件中所有的Key
foreach (var item in ReadKeys("Session",str))
{
Console.WriteLine(item);
}
//读取ini文件中所有的Session
foreach (var item in ReadSessions(str))
{
Console.WriteLine(item);
}