解析ini文件最全最省事的方法

C#读写ini文件之前要了解的概念:INI就是扩展名为"INI"的文件,其实他本身是个文本文件,可以用记事本打开,主要存放的是用户所做的选择或系统的各种参数.

C#读写ini文件其实并不是普通的文本文件.它有自己的结构.由若干段落(SECTION)组成,在每个带括号的标题下面,是若干个以单个单词开头的关键字(KEYWORD)和一个等号,等号右边就是关键字的值(VALUE).例如:

[Section1] KeyWord1 = Value1 KeyWord2 = Value2 ... [Section2] KeyWord3 = Value3 KeyWord4 = Value4 C#读写ini文件最初的想法:C#命名空间中没有直接读写INI的类,当然如果你把INT当成文本文件用System.IO类来读写算我没说.

我现在介绍的是系统处理INI的方法.

虽然C#中没有,但是在"kernel32.dll"这个文件中有Win32的API函数--WritePrivateProfileString()和GetPrivateProfileString()

C#读写ini文件实现之C#声明INI文件的写操作函数WritePrivateProfileString():

[DllImport( "kernel32" )] private static extern long WritePrivateProfileString ( string section ,string key , string val , string filePath ) ; 参数说明:

section:INI文件中的段落;

key:INI文件中的关键字;

val:INI文件中关键字的数值;

filePath:INI文件的完整的路径和名称。

C#读写ini文件实现之C#申明INI文件的读操作函数GetPrivateProfileString():

[DllImport("kernel32")] private static extern int GetPrivateProfileString ( string section , string key , string def , StringBuilder retVal , int size , string filePath ) ; 参数说明:

section:INI文件中的段落名称;

key:INI文件中的关键字;

def:无法读取时候时候的缺省数值;

retVal:读取数值;

size:数值的大小;

filePath:INI文件的完整路径和名称。

下面是一个C#读写ini文件的类:


public class INIClass { public string inipath; [DllImport("kernel32")] private static extern long WritePrivateProfileString(string section,string key,string val,string filePath); [DllImport("kernel32")] private static extern int GetPrivateProfileString(string section,string key,string def,StringBuilder retVal,int size,string filePath); /// ﹤summary﹥ /// 构造方法 /// ﹤/summary﹥ /// ﹤param name="INIPath"﹥文件路径﹤/param﹥ public INIClass(string INIPath) { inipath = INIPath; } /// ﹤summary﹥ /// 写入INI文件 /// ﹤/summary﹥ /// ﹤param name="Section"﹥项目名称(如 [TypeName] )﹤/param﹥ /// ﹤param name="Key"﹥键﹤/param﹥ /// ﹤param name="Value"﹥值﹤/param﹥ public void IniWriteValue(string Section,string Key,string Value) { WritePrivateProfileString(Section,Key,Value,this.inipath); } /// ﹤summary﹥ /// 读出INI文件 /// ﹤/summary﹥ /// ﹤par

am name="Section"﹥项目名称(如 [TypeName] )﹤/param﹥ /// ﹤param name="Key"﹥键﹤/param﹥ public string IniReadValue(string Section,string Key) { StringBuilder temp = new StringBuilder(500); int i = GetPrivateProfileString(Section,Key,"",temp,500,this.inipath); return temp.ToString(); } /// ﹤summary﹥ /// 验证文件是否存在 /// ﹤/summary﹥ /// ﹤returns﹥布尔值﹤/returns﹥ public bool ExistINIFile() { return File.Exists(inipath); } }

相关文档
最新文档