//ini文件的完整地址
static string fileName = $"{System.Environment.CurrentDirectory}\\user.ini";
static void Main(string[] args)
{
//写入的地址
//string fileName = $"{System.Environment.CurrentDirectory}\\user.ini";
//写入数据
WritePrivateProfileString("Student", "Name", "张三", fileName) ;
WritePrivateProfileString("Student","City","郑州",fileName);
WritePrivateProfileString("Student", "Age","22",fileName);
//读取数据
StringBuilder sb = new StringBuilder();
GetPrivateProfileString("Student","Name","",sb,128,fileName);
string name = sb.ToString();
while (true)
{
string str = Console.ReadLine();
if (str.Contains("r")) //读取数据
{
string[] strs = str.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
if (strs.Length != 3)
{
Console.WriteLine("指令不正确");
break;
}
string value = Read(strs[1], strs[2]);
Console.WriteLine(value);
}
else if (str.Contains("w")) //写数据
{
string[] strs = str.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);
if (strs.Length != 4)
{
Console.WriteLine("指令不正确");
break;
}
int length = Write(strs[1], strs[2], strs[3]);
Console.WriteLine(length);
}
else
{
Console.WriteLine("指令不存在");
}
}
}
/*
引用c/c++语言的dll时,方法名不是随便命名的,要跟c/c++ 的dll里面的方法名一样
*/
/// <summary>
/// ini配置文件写入配置
/// 如果存在就修改,如果不存在就新增
/// </summary>
/// <param name="sectionName">段落名</param>
/// <param name="keyName">键</param>
/// <param name="value">值</param>
/// <param name="fileName">ini文件路径</param>
[DllImport("Kernel32.dll")]
public static extern Int32 WritePrivateProfileString(
string sectionName,
string keyName,
string value,
string fileName);
/// <summary>
/// ini配置文件读取配置
/// </summary>
/// <returns></returns>
/// <param name="sectionName">段落名</param>
/// <param name="keyName">键</param>
/// <param name="defaultValue">当键不存在时返回的默认值</param>
/// <param name="returnValue">当前读取到的数据</param>
/// <param name="seze">需要读取数据的大小</param>
/// <param name="fileName">ini文件的路径</param>
[DllImport("kernel32.dll")]
public static extern Int32 GetPrivateProfileString(
string sectionName,
string keyName,
string defaultValue,
StringBuilder returnValue,
UInt32 seze,
string fileName
);
//封装读取数据的方法
public static string Read(string sectionName,string keyName)
{
StringBuilder sb = new StringBuilder();
GetPrivateProfileString(sectionName, keyName,string.Empty,sb,512,fileName);
return sb.ToString();
}
//封装写入数据的方法
public static int Write(string sectionName,string keyName,string value)
{
return WritePrivateProfileString(sectionName, keyName, value, fileName);
}