C#操作ini(读取、写入)
INI文件是一种按照特点方式排列的文本文件,该文件主要存放用户所做的选择以及系统的各种参数。用户可以通过修改INI文件,来改变应用程序和系统的很多配置。但自从Windows 95的退出,在Windows系统中引入了注册表的概念,INI文件在Windows系统的地位就开始不断下滑,这是因为注册表的独特优点,使应用程序和系统都把许多参数和初始化信息放进了注册表中。但在某些场合,INI文件还拥有其不可替代的地位。
INI文件的结构
INI文件是一种按照特点方式排列的文本文件。每一个INI文件构成都非常类似,由若干段落(section)组成,在每个带括号的标题下面,是若干个以单个单词开头的关键词(keyword)和一个等号,等号右边的就是关键字对应的值(value)。其一般形式如下:
[Section1] KeyWord1 = Valuel KeyWord2 = Value2 ...... [Section2] KeyWord3 = Value3 KeyWord4 = Value4 |
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string defVal, StringBuilder retVal, int size, string filePath);
注:
section:要读取的段落名
key: 要读取的键
defVal: 读取异常的情况下的缺省值
retVal: key所对应的值,如果该key不存在则返回空值
size: 值允许的大小
filePath: INI文件的完整路径和文件名
key: 要读取的键
defVal: 读取异常的情况下的缺省值
retVal: key所对应的值,如果该key不存在则返回空值
size: 值允许的大小
filePath: INI文件的完整路径和文件名
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
注:
section: 要写入的段落名
key: 要写入的键,如果该key存在则覆盖写入
val: key所对应的值
filePath: INI文件的完整路径和文件名
key: 要写入的键,如果该key存在则覆盖写入
val: key所对应的值
filePath: INI文件的完整路径和文件名
/// <summary>
/// 读取INI文件
/// </summary>
/// <param name="section">项目名称(如 [section] )</param>
/// <param name="skey">键</param>
/// <param name="path">路径</param>
public string IniReadValue(string section, string skey, string path)
{
StringBuilder temp = new StringBuilder(500);
int i = GetPrivateProfileString(section, skey, "", temp, 500, path);
return temp.ToString();
}
/// <summary>
/// 写入ini文件
/// </summary>
/// <param name="section">项目名称</param>
/// <param name="key">键</param>
/// <param name="value">值</param>
/// <param name="path">路径</param>
public void IniWrite(string section, string key, string value,string path)
{
WritePrivateProfileString(section, key, value, path);
}
测试:
//创建一个test.ini文件 并在A段落写入 姓名(key)=wlj(value)
IniWrite("A","姓名","wlj","f:/test.ini")
IniWrite("B","姓名","WZQ","f:/test.ini")
test.ini文件的格式:
ini模版:
[A]
姓名=wlj
[B]
姓名=WZQ
//读取test.ini文件中A 段落 键=姓名 的值
IniReadValue("A","姓名","f:/test.ini")
//读取test.ini文件中A 段落中所有值
IniReadValue("A",null,"f:/test.ini")
//删除test.ini文件中A 段落中所有键(没有键,也就没有值了)
IniWrite("A",null,null,"f:/test.ini")
//删除test.ini文件中所有段落
IniWrite(null,null,null,"f:/test.ini")