一、ini的格式
由节(Sections)和键值对(Key-Value Pairs)组成。每个节由方括号包围,例如[SectionName],而键值对则是以等号=分隔的字符串,例如Key=Value。每个节都包含一个或多个键值对,用于存储相关的配置信息。
ini文件不支持多数据类型,只支持字符串
[节点名]
键名 = 值
一、引用
C#命名空间中没有直接读写INI的类,但在"kernel32.dll"文件中有Win32的API函数–WritePrivateProfileString()和GetPrivateProfileString(),可操作ini文件。
其中"kernel32.dll"文件是电脑自带的一个库,引用方法为DllImport
1.DllImport
是 C# 中用于从非托管 DLL(动态链接库)中导入函数的一个特性。这个特性允许你在 .NET 应用程序中调用由其他语言编写的函数,如 C 或 C++。使用 DllImport
可以让你重用现有的非托管代码,而不需要重新实现这些功能。CharSet
属性指定了字符集。CharSet.Auto
表示自动选择合适的字符集
// 声明INI文件的写操作函数 WritePrivateProfileString()
[DllImport("kernel32.dll",CharSet = CharSet.Auto)]
private static extern bool WritePrivateProfileString(string section, string key, string value, string filePath);
// 声明INI文件的读操作函数 GetPrivateProfileString()
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string def, System.Text.StringBuilder retVal, int size, string filePath);
2.WritePrivateProfileString
section | 节点名 |
key | 键名 |
value | 值 |
filePath | 文件地址 |
string INIStr = Directory.GetCurrentDirectory() + "\\com.ini";
//判断文件是否存在
if (!File.Exists(INIStr))
{
using (FileStream fs = new FileStream(INIStr, FileMode.Create, FileAccess.Write))
{
fs.Close();
}
}
WritePrivateProfileString("MES","MES","12",INIStr);
3.GetPrivateProfileString
section | 节点名 |
key | 键名 |
def | 当文件里找不到键对应的值的时候的默认值 |
retval | 读到的值 |
size | 读取缓冲区大小 |
filePath | 文件地址 |
StringBuilder lpReturnedString = new StringBuilder(200);
string INIStr = Directory.GetCurrentDirectory() + "\\com.ini";
int p= GetPrivateProfileString("MES", "MdE","42", lpReturnedString,200,INIStr);
string oi= lpReturnedString.ToString();